8

私はデータベースを持っています(私はMS ACCESSを使用しています)私はこの挿入コードを持っています、データを読み取ることはできますが書き込み中にエラーが発生しました、私は指示に従いますが、ここでは機能しませんでした私のコードです

OleDbConnection con = new OleDbConnection(@" provider=Microsoft.ace.Oledb.12.0; data source=\\sisc-erelim\4_Printing\VTDB\DB\VirginiTEADB2.accdb; Persist Security Info=False");

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                OleDbCommand cmd = new OleDbCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "INSERT INTO Accountstbl (Username, Password)" + "VALUES ('" + textBox1.Text + "','" + textBox2.Text + "')";
                cmd.Parameters.AddWithValue("@Username", textBox1.Text);
                cmd.Parameters.AddWithValue("@Password", textBox2.Text);
                cmd.Connection = con;
                con.Open();
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                textBox1.Text = ex.ToString();
            }

そして、私はいつもこのエラーを受け取りました、

System.Data.OleDb.OleDbException: Syntax error in INSERT INTO statement.
   at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
   at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   at VirginiTEAcorp.Form3.button1_Click(Object sender, EventArgs e) in C:\Documents and Settings\12-014s\My Documents\applications\Database\WindowsFormsApplication1\Form3.cs:line 34
4

4 に答える 4

9

パラメータを定義@Usernameしましたが、SQLコマンドで使用したことはありません。@Password

どうですか?

cmd.CommandText = "INSERT INTO Accountstbl (Username, [Password]) VALUES (@Username, @Password)";
cmd.Parameters.AddWithValue("@Username", textBox1.Text);
cmd.Parameters.AddWithValue("@Password", textBox2.Text);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();

また、MS AccessにあるためPassword、SQLコマンドでは角かっこで囲む必要があります。[Password]reserved keyword

そうしないと、次のようなエラーが発生する可能性があります。

キーワード「パスワード」の近くの構文が正しくありません

于 2013-02-12T09:10:07.840 に答える
1

このように変更してみてください

 cmd.CommandText = "INSERT INTO Accountstbl (Username, Password) VALUES (@Username,@Password)";
于 2013-02-12T09:09:06.907 に答える
0

挿入ステートメントにはスペースが必要です。

ssword)" + "VALUES ('" 

たとえば、ステートメントで、スペースを許可せずに連結しました。

する必要があります:

ssword)" + " VALUES ('" 

例えば。

于 2013-02-12T09:09:16.940 に答える
0

あなたはこれを持つことができます:

cmd.CommandText = "INSERT INTO Accountstbl (Username, [Password]) VALUES (@Username,@Password)";
            cmd.Parameters.AddWithValue("@Username", textBox1.Text);
            cmd.Parameters.AddWithValue("@Password", textBox2.Text);

これがうまくいくことを願っています。

元気づける。

于 2013-02-28T01:50:56.647 に答える