2017-02-06 4 views
0

Я получаю синтаксическую ошибку при использовании команды «Вставить в» SQL с помощью C#. Я использую Access db для хранения некоторых данных. Удивительно, когда я копирую точную команду в 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», является подходящим и позволяет избежать этой проблемы.

Смежные вопросы