Когда я запускаю следующий запрос, я получаю синтаксическую ошибку в выражении запроса.синтаксическая ошибка отсутствует оператор в выражении запроса
private void button8_Click(object sender, EventArgs e)
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
string query1 = "UPDATE Points SET PNTS =
(case when EmpName = '" + comboBox1.Text +
"' then '" + label15.Text + "' when EmpName = '" +
comboBox2.Text + "' then '" + label16.Text +
"' when EmpName = '" + comboBox3.Text + "' then '" +
label17.Text + "' end) WHERE EmpName in ('" +
comboBox1.Text + "', '" + comboBox2.Text + "', '" +
comboBox3.Text + "')";
command.CommandText = query1;
command.ExecuteNonQuery();
connection.Close();
}
Ошибка:
Синтаксическая ошибка (отсутствующий оператор) в выражении запроса «(случай, когда EmpName = 'Sam', затем '5,6', когда EmpName = 'Shane', затем '1,6' когда EmpName = 'Mike' then '0.8' end) '.
Ваш код делает большую ошибку для SQL-инъекции. –
Какая база данных пытается обновить? Это определенно не похоже на SQL for Case/When в SQL Server. (Я бы настоятельно рекомендовал строить параметризованный SQL вместо того, чтобы напрямую строить SQL с использованием ввода ...) –
Ваш код ** чрезвычайно ** уязвим для [SQL injection] (http://en.wikipedia.org/ wiki/SQL_injection). Ради ваших пользователей * пожалуйста * используйте [параметризованные запросы] (https://msdn.microsoft.com/en-us/library/yy6y35y8.aspx). –