【解決方法】Oledb挿入コマンド

[ad_1]

C#
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

このように挿入ステートメントを更新します

C#
cmd.CommandText = "INSERT INTO Accountstbl (Username, Password)" + " VALUES (@Username,@Password)";

これは、すでに引数をクエリ パラメータに渡しているためです。

C#
cmd.Parameters.AddWithValue("@Username", textBox1.Text);
cmd.Parameters.AddWithValue("@Password", textBox2.Text);

解決策 2

コマンドにパラメーターを追加しましたが、SQL に値を挿入しました。 コマンドテキストを次のように変更します

SQL
INSERT INTO Accountstble (Username, Password) VALUES (?, ?)

次に、 @ パラメーター名からの記号 – これらは Access ではなく SQL Server で使用されるため、必要ありません。

[ad_2]

コメント

タイトルとURLをコピーしました