2017-05-01 8 views
0

現在、更新システムを備えたソフトウェアを作成しています。特定のユーザーが更新プログラムを作成し、その更新プログラムがデータベースに保存され、誰でも見ることができます。私が更新をしようとすると、しかし、私は、エラーコードを取得する:キーワード 'Update'の近くに不適切な構文があります

付近に正しくない構文「更新」

使用中のコードは次のとおりです。

private void btnSetUpdate_Click(object sender, EventArgs e) 
    { 
     if (cmboxClassUpdate.SelectedItem == null || rtbSetUpdate.Text == null) 
     { 
      MessageBox.Show("Please make sure you have selected a class and made an update"); 
     } 
     else 
     { 
      con.Open(); 
      cmd = new SqlCommand("INSERT INTO Updates (User_ID,Update,Date,Class) VALUES (@User_ID,@Update,@Date,@Class) ", con); 
      cmd.Parameters.AddWithValue("@User_ID", FrmLogIn.User_ID); 
      cmd.Parameters.AddWithValue("@Update", rtbSetUpdate.Text); 
      cmd.Parameters.AddWithValue("@Date", DateTime.Now.ToString("M/d/yyyy")); 
      cmd.Parameters.AddWithValue("@Class", cmboxClassUpdate.SelectedItem.ToString()); 
      try 
      { 
       cmd.ExecuteNonQuery(); 
      } 
      catch (SqlException ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
      finally 
      { 
       con.Close(); 
      } 

誰かがこのを通じて顔をしていると言うことができる場合私はちょうど私が見ることができない明らかな誤りがあれば私に(私はデータベースに新しいです)。何かが不明な場合は教えてください。

ご回答ありがとうございます。ありがとうございます。

+0

'update'(' Updates'のあなたの列)はあなたのDBMSの予約語である可能性が高く、使用する場合はエスケープする必要があります。 – AlG

答えて

4

「更新」は予約済みのキーワードです。予約されたキーワードは列名として使用できますが、参照するときは、コマンドパーサーを混乱させないように、それらを括弧で囲む必要があります。

SQLコマンドを「INSERT INTO Updates([User_ID]、[Update]、[Date]、[Class])VALUES(@ User_ID、@ Update、@ Date、@ Class)に変更してください。

他の列名を角カッコで囲むことはオプションです。 DATEも型名ですが、問題を起こさずに列名として使用できると思います(大括弧で囲むことはおそらく良い考えです)。

関連する問題