forte74 Ответов: 2

Как передать имя пользователя, пароль и идентификатор в качестве параметров в запрос ?


Есть ли в любом случае я могу передать имя пользователя, пароль и идентификатор в качестве параметров
в запрос ?

Я создал метод для этого:

и попытался вызвать его

этот.Обновление ("Джен", "779", " 55") ;

но я получаю :


An unhandled exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in MySql.Data.dll

Additional information: Unknown column 'user' in 'where clause'




на линии


cmd.ExecuteNonQuery();




public void Update(string user, string passw, string ID)
     {


         string query = "UPDATE users SET username= user, password= passw, id= ID  WHERE username= user";

       //string query = "UPDATE users SET username='Joe', password='22', id='33'  WHERE username='Joe'";

 //Open connection
 if (OpenConnection() == true)
 {
     //create mysql command
     MySqlCommand cmd = new MySqlCommand();
     //Assign the query using CommandText
     cmd.CommandText = query;
     //Assign the connection using Connection
     cmd.Connection = connection;

     //Execute query
     cmd.ExecuteNonQuery();

     //close connection
     this.CloseConnection();
 }



     }


Что я уже пробовал:

*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2 Ответов

Рейтинг:
2

Midi_Mick

Здесь есть 2 вещи, которые не подходят.


  • Обычно (в зависимости от того, какой компонент СУБД вы используете) имена параметров в строке запроса начинаются с префикса "@". Похоже, что вы там MySQL, и это относится к этому движку базы данных. Это означает, что ваш запрос становится
    UPDATE users SET username= @user, password= @passw, id= @ID WHERE username= @user
  • Вам нужно добавить параметры в объект DbCommand
    cmd.Parameters.AddWithValue("@user", user);
    cmd.Parameters.AddWithValue("@passw", passw);
    cmd.Parameters.AddWithValue("@ID", ID);
    ...
    cmd.ExecuteNonQuery();


Midi_Mick

Просто краткое замечание: зачем обновлять имя пользователя, если оно не изменилось - если бы оно изменилось, предложение WHERE потерпело бы неудачу?

Рейтинг:
2

W∴ Balboos, GHB

Ваша строка запроса неверна. Почему?
Потому что

username= user
отправляется на сервер точно так же, как вы его вводите. "пользователь" не заменяется его значением и считается, по сути, именем столбца во многих версиях sql.


Вам нужно построить строку так, чтобы значения были подставлены в строку. Например,
username='{0}'
в вашей строке, где пользователь - это его значение. Подробнее о том, как это использовать, см. В разделе строковые функции C#.

Не забудьте включить одинарные кавычки вокруг строк. на стороне формат строки по мере необходимости передаются в SQL-запрос.