[ad_1]
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: INSERT INTO ステートメントの構文エラーです。
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling (OleDbHResult 時間) で
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult (tagDBPARAMS dbParams、オブジェクト & executeResult) で
System.Data.OleDb.OleDbCommand.ExecuteCommandText (オブジェクト & executeResult) で
System.Data.OleDb.OleDbCommand.ExecuteCommand (CommandBehavior 動作、Object& executeResult) で
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal (CommandBehavior 動作、文字列メソッド) で
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() で
C:\Documents and Settings\12-014s\My Documents\applications\Database\WindowsFormsApplication1\Form3.cs:line 34 の VirginiTEAcorp.Form3.button1_Click(オブジェクト送信者、EventArgs e)
ありがとう :)
解決策 1
このように挿入ステートメントを更新します
cmd.CommandText = "INSERT INTO Accountstbl (Username, Password)" + " VALUES (@Username,@Password)";
これは、すでに引数をクエリ パラメータに渡しているためです。
cmd.Parameters.AddWithValue("@Username", textBox1.Text); cmd.Parameters.AddWithValue("@Password", textBox2.Text);
解決策 2
コマンドにパラメーターを追加しましたが、SQL に値を挿入しました。 コマンドテキストを次のように変更します
INSERT INTO Accountstble (Username, Password) VALUES (?, ?)
次に、 @
パラメーター名からの記号 – これらは Access ではなく SQL Server で使用されるため、必要ありません。
[ad_2]
コメント