2017-02-06 14 views
0

で 'Insert into'コマンドを使用すると、C#を使用して 'Insert into' SQLコマンドを使用すると構文エラーが発生します。私はいくつかのデータを格納するためにAccessデータベースを使用しています。 驚くべきことに、正確なコマンドをMS Accessにコピーして、それが正しくない場合に試してみると、魅力的に機能します。私は少し混乱している!私はこの点について何か考えても助けてもらえます。ここに私のコードです:シンタックスエラーの取得c#

using (OleDbConnection connection = new OleDbConnection(Global.ConString)) 
      { 
       using (OleDbCommand command = new OleDbCommand()) 
       { 
        command.Connection = connection;    
        command.CommandType = CommandType.Text; 
        command.CommandText = "INSERT INTO Users(Name,UserName,Password,Customers,Jobs,Invoice,Statement,Reports,Users) values (@name,@UserName,@Password,@Customers,@Jobs,@Invoice,@Statement,@Reports,@Users)"; 

        command.Parameters.AddWithValue("@name",fullName.Text); 
        command.Parameters.AddWithValue("@UserName", userName.Text); 
        command.Parameters.AddWithValue("@Password", passWord.Text); 
        command.Parameters.AddWithValue("@Customers", Customers.Checked); 
        command.Parameters.AddWithValue("@Jobs", Jobs.Checked); 
        command.Parameters.AddWithValue("@Invoice", Invoice.Checked); 
        command.Parameters.AddWithValue("@Statement", Statement.Checked); 
        command.Parameters.AddWithValue("@Reports", Report.Checked); 
        command.Parameters.AddWithValue("@Users", userDef.Checked); 

        try 
        { 
         connection.Open(); 
         int recordsAffected = command.ExecuteNonQuery(); 
         if (recordsAffected > 0) 
         { 
          foreach (Control item in newRecord.Controls) 
          { 
           if (item is TextBox) item.ResetText(); 
          } 
          timer1.Enabled = true; 

         } 
         else 
          MessageBox.Show("Insert Fail"); 

        } 
        catch (OleDbException err) 
        { 

         MessageBox.Show("Somthing wrong. Error no. is: " + err.ErrorCode + "..." + err.Message); 
        } 
       } 
      } 

答えて

1

おそらくあなたの問題は、識別子として予約語、特に「パスワード」の使用です。その列名を角かっこで囲みます。つまり、[Password]です。あなたはうまくいくはずです。

可能であれば、予約語を避けることをお勧めします。一般的に言えば、データベースにハッシュされていないパスワードを格納してはならないので、 'PasswordHash'のような列名が適切であり、この問題を回避できます。

関連する問題