2015-04-30 2 views
0
public void EditUser(string id, string userid, string email, string password) 
    { 
     try 
     { 
      _dbConn.Open(); 

      OleDbCommand updateCmd = new OleDbCommand("UPDATE LOGINS SET Username=?, Password=?, Email=? WHERE ID=?", _dbConn); 


      OleDbParameter param1 = new OleDbParameter("Username", userid); 
      OleDbParameter param2 = new OleDbParameter("Password", password); 
      OleDbParameter param3 = new OleDbParameter("Email", email); 
      OleDbParameter param4 = new OleDbParameter("ID", id); 

      param1.DbType = DbType.AnsiString; 
      param1.Direction = ParameterDirection.Input; 
      param2.DbType = DbType.AnsiString; 
      param2.Direction = ParameterDirection.Input; 
      param3.DbType = DbType.AnsiString; 
      param3.Direction = ParameterDirection.Input; 
      param4.DbType = DbType.AnsiString; 
      param4.Direction = ParameterDirection.Input; 

      updateCmd.Parameters.Add(param1); 
      updateCmd.Parameters.Add(param2); 
      updateCmd.Parameters.Add(param3); 
      updateCmd.Parameters.Add(param4); 


      int rowsAffected = updateCmd.ExecuteNonQuery(); 

     } 
     catch (Exception excep) 
     { 

      System.Diagnostics.Trace.WriteLine(excep.Message); 
     } 
     finally 
     { 
      if (_dbConn.State == ConnectionState.Open) 
       _dbConn.Close(); 

     } 
     return; 
    } 

Я использую C# и Access 2007, это прекрасно работает, когда я обновляю один столбец. Но когда я пытаюсь обновить несколько столбцов одновременно, я начинаю получать это исключениеПочему я получаю «Синтаксическую ошибку в инструкции UPDATE». исключение?

«Ошибка синтаксиса в инструкции UPDATE.».

ответ

6

Password является reserved keyword в OLE DB Provider. Вам нужно использовать его с квадратными скобками, например [Password].

Как передовая практика, измените его на не зарезервировано слово.

Также используйте using statement, чтобы распоряжаться своими OleDbCommand и OleDbConnection, даже мы не можем его увидеть.

+0

Благодарим вас, также оцените советы по использованию 'using' – Ali

+0

@Ali Рад помочь. –

0

Я согласен с сонаром. Пароль является зарезервированным ключевым словом в OLE DB Provider.

Если вы используете несколько таблиц, Чтобы избежать путаницы из зарезервированных ключевых слов - , вы должны использовать. выберите таблицу. [Пароль] из таблицы;

UPDATE таблица SET таблица. [Пароль] =?