Синтаксическая ошибка в выражении UPDATE. Что не так с кодом? - PullRequest
1 голос
/ 11 июня 2019

Я пытаюсь обновить свою базу данных из Интернета, но она не работает, и я не знаю почему.он говорит: «Недопустимый аргумент обратной передачи или обратного вызова. Проверка события включена с использованием в конфигурации или <% @ Page EnableEventValidation =" true "%> на странице. В целях безопасности эта функция проверяет, что аргументы для событий обратной передачи или обратного вызова происходят изсерверный элемент управления, который изначально их отобразил. Если данные действительны и ожидаемы, используйте метод ClientScriptManager.RegisterForEventValidation, чтобы зарегистрировать данные обратной передачи или обратного вызова для проверки. "что мне нужно сделать?

string MySQL = @"UPDATE users 
             (email, pname, accountname, pid, age, passw) 
             Set(@email, @pname,@account,@pid, @age, @passw) where 
(id='"+Request.Form["id"]+"')";
    string strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data 
Source=" + 
System.Web.HttpContext.Current.Server.MapPath(@"DataBase\Users.accdb");
    using(System.Data.OleDb.OleDbConnection con = new  
System.Data.OleDb.OleDbConnection(strConnection))
    using(System.Data.OleDb.OleDbCommand cmd = new  
System.Data.OleDb.OleDbCommand(MySQL, con))
    {
        con.Open();
        cmd.Parameters.Add("@email",  
System.Data.OleDb.OleDbType.VarWChar).Value = Request.Form["email"];
        cmd.Parameters.Add("@pname",  
System.Data.OleDb.OleDbType.VarWChar).Value = Request.Form["pname"];
        cmd.Parameters.Add("@account",  
System.Data.OleDb.OleDbType.VarWChar).Value = Request.Form["accountname"];
        cmd.Parameters.Add("@pid",  
System.Data.OleDb.OleDbType.VarWChar).Value = Request.Form["pid"];
        cmd.Parameters.Add("@age",  
System.Data.OleDb.OleDbType.VarWChar).Value = Request.Form["age"];
        cmd.Parameters.Add("@passw",  
System.Data.OleDb.OleDbType.VarWChar).Value = Request.Form["passw"];
        cmd.ExecuteNonQuery();
        con.Close();
    }
    Response.Redirect("showalldata.aspx");

1 Ответ

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

Ваш синтаксис UPDATE неверен.Таким образом, он выдает синтаксическую ошибку.

Вместо прямого присваивания столбца Request.Form["id"] на id в предложении WHERE, присвоив ему также cmd.Parameters.Add.Потому что это возможно для атаки SQL-инъекцией.

Следующий запрос будет работать.

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

 ...
 ...

 cmd.Parameters.Add("@paramid",  
   System.Data.OleDb.OleDbType.VarWChar).Value = Request.Form["id"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...