0

なぜこれがデータベースに値を追加しないのか誰かに教えてもらえますか?フォームは正常に実行され、エラーは返されません。

    private void button1_Click(object sender, EventArgs e)
    {
        SqlConnection connection = new SqlConnection();
        SqlCommand command = new SqlCommand();

        connection.ConnectionString = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\John\Documents\Setup.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

        command.Parameters.AddWithValue("@userName", textBox1.Text);
        command.Parameters.AddWithValue("@passWord", textBox2.Text);
        command.CommandText = "INSERT INTO Setup (userName, password) VALUES(@userName, @passWord)";



        try
        {
            connection.Open();
            int rowsAffected = command.ExecuteNonQuery();

        }
        catch (Exception ex)
        {
            // handle exception
        }
        finally
        {
            connection.Close();
        }


    }

参考:私は「初心者」です。私のデータベースはセットアップと呼ばれています。2列のuserNameを持つmyTableというテーブルと、パスワードと呼ばれる別のテーブルを手動で追加しました。どちらもnchar(50)に設定されています。

4

3 に答える 3

6

Tableデータベース(接続文字列で使用される)ではなく、を指定する必要があります。テーブル名にスキーマプレフィックスを追加しました:

command.CommandText = "INSERT INTO dbo.myTable (userName, password) VALUES (@userName, @passWord)";

そして追加:

command.Connection = connection;

Commandオブジェクトを接続オブジェクトに関連付けます。

于 2012-04-27T18:29:23.083 に答える
1

フォームは正常に実行され、エラーは返されません。

それはおそらくあなたがそれらを飲み込んでいるからです。あなたのを取り除く(またはログに記録する)catch (Exception ex)

一般に、.NET BCLは適切に設計されています。メソッドが機能しない場合は、例外が発生します。

[現在]エラー「ExecuteNonQuery:接続プロパティが初期化されていません」が発生します。

右。に渡す必要がありSqlConnectionますSqlCommand

SqlCommand command = new SqlCommand();
command.Connection = connection;
于 2012-04-27T18:37:05.647 に答える
1

コードは次のようになります。

  • 接続オブジェクトを設定します。
  • @LarsTechが言及したようにテーブル名を指定します。
  • のようなテーブル名を指定するときは、2つの部分からなる表記を使用することをお勧めします[Schema name].[Table Name]。したがって、次のようにテーブル名を指定する必要がありますdbo.MyTable

コードスニペット

private void button1_Click(object sender, EventArgs e)
{
    SqlConnection connection = new SqlConnection();
    connection.ConnectionString = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\John\Documents\Setup.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;");

    SqlCommand command = new SqlCommand();
    command.Connection = connection;
    command.CommandText = "INSERT INTO dbo.MyTable  (userName, password) VALUES (@userName, @passWord)";
    command.Parameters.AddWithValue("@userName", textBox1.Text);
    command.Parameters.AddWithValue("@passWord", textBox2.Text);

    try
    {
        connection.Open();
        int rowsAffected = command.ExecuteNonQuery();
    }
    catch (Exception ex)
    {
        //handle exception
    }
    finally
    {
        connection.Close();
    }
}
于 2012-04-27T18:46:45.820 に答える