Несоответствие типов данных в выражении критериев. в чем дело? - PullRequest
0 голосов
/ 11 июня 2019

как поместить переменную int в sql?

int x = Convert.ToInt32(Session["id"]);
     string MySQL = @"UPDATE users SET 
     email = '"+Request.Form["email"]+"', pname = 
'"+Request.Form["pname"]+"', accountname= 
'"+Request.Form["accountname"]+"', pid = '"+Request.Form["pid"]+"', age = 
'"+Request.Form["age"]+"',passw = '"+Request.Form["passw"]+"' where 
id='x';";

1 Ответ

0 голосов
/ 11 июня 2019

Пожалуйста, не используйте объединенные значения в вашей команде SQL. Вы выставляете свою заявку на SQL Injection Attacks. Подробнее здесь .

Вместо этого используйте SqlParameters. Это правильный способ сделать и безопаснее, когда вы запускаете команды sql для своей базы данных из вашего приложения.

Если значение int, то его необходимо преобразовать в целое число:

command.Parameters.AddWithValue("@id", int.Parse(Request.Form["id"]));

Вот пример того, как использовать параметры.

string mySql = @"UPDATE users SET email = @email, pname = @pname, accountname = @accountname, pid = @pid, age = @age, passw = @passw where id = @id;";

string connectionString = "Server=localhost\\SQLEXPRESS;Database=[your database];User Id=sa;Password=[your password];";

using (SqlConnection connection = new SqlConnection(connectionString))
{
   SqlCommand command = new SqlCommand(mySql, connection);

   command.Parameters.AddWithValue("@email", Request.Form["email"]);
   command.Parameters.AddWithValue("@pname", Request.Form["pname"]);
   command.Parameters.AddWithValue("@accountname", Request.Form["accountname"]);
   command.Parameters.AddWithValue("@pid", Request.Form["pid"]);
   command.Parameters.AddWithValue("@age", int.Parse(Request.Form["age"]));
   command.Parameters.AddWithValue("@passw", Request.Form["passw"]);
   command.Parameters.AddWithValue("@id", int.Parse(Request.Form["id"]));

   connection.Open();
   command.ExecuteNonQuery();

}

Подробнее о SqlCommand здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...