web-dev-qa-db-ja.com

クエリ実行時の「無効なオブジェクト名」エラー

データベースをVisual Studio 2017に接続します。クエリを実行しようとすると、次のエラーが表示されます。

enter image description here

私が使用している接続文字列は次のとおりです。

SqlConnection con = new SqlConnection("Data Source=ANUPAM-DESKTOP\ANUPAM;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"); 

私のコード:

public void exicuteDatabaseQuery(String query)
    {

        con.Open();
        SqlDataAdapter sda = new SqlDataAdapter(query, con);
        sda.SelectCommand.ExecuteNonQuery();
        con.Close();
        MessageBox.Show("Successfull");


    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        int id = Convert.ToInt32(___Id_.Text);
        int number = Convert.ToInt32(___Number_.Text);
        String InsertQuery = "INSERT INTO Member (id, number) 
        values('"+id+"','"+number+"')";

        exicuteDatabaseQuery(InsertQuery);
    }

データベースエクスプローラーの画像:

enter image description here

7

問題は、SQL Serverログインに「デフォルトデータベース」が正しく設定されていないことだと思います。

これにより、「デフォルトデータベース」の設定が表示されます。

_SELECT sp.name
    , sp.default_database_name
FROM sys.server_principals sp
WHERE sp.name = SUSER_SNAME();
_

ログインのデフォルトデータベースを変更するか、接続文字列でデータベースを指定できます。

これにより、デフォルトのデータベースが変更されます。

_ALTER LOGIN <login_name> WITH DEFAULT_DATABASE = [testDB];
_

接続文字列でデータベースを指定する場合は、接続文字列を作成します。

SqlConnection con = new SqlConnection("Data Source=ANUPAM-DESKTOP\\ANUPAM;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;Initial Catalog=testDB");

13
Max Vernon