#sql-server #wpf #syntax-error
#sql-сервер #wpf #синтаксис-ошибка
Вопрос:
Я пытаюсь обновить таблицу SQL Server (подключенную к проекту WPF), и я получаю сообщение
Неправильный синтаксис рядом с ключевым словом WHERE
Что не так в моем коде?
private void Save_button_Click(object sender, RoutedEventArgs e)
{
try
{
Select("INSERT INTO [dbo].[Users](sumScore, doneLevels) VALUES ('" ClsGlobal.sumScore "','" ClsGlobal.DoneLevels "') WHERE [userName]= '" ClsGlobal.userName "'");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public DataTable Select(string selectSQL)
{
DataTable dataTable = new DataTable("dataBase");
SqlConnection sqlConnection = new SqlConnection(@"Data Source =(LocalDB)MSSQLLocalDB; AttachDbFilename = C:UsersAvrahamAppDataLocalMicrosoftMicrosoft SQL Server Local DBInstancesMSSQLLocalDBNew Database.mdf ");
sqlConnection.Open();
SqlCommand sqlCommand = sqlConnection.CreateCommand();
sqlCommand.CommandText = selectSQL;
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
sqlDataAdapter.Fill(dataTable);
return dataTable;
}
Я бы попытался получить [и] или (и) рядом со словом username, но это все равно не сработало.
Комментарии:
1. Как только у вас это заработает, найдите время, чтобы прочитать «sql-инъекционная атака» или «таблицы удаления Бобби».
Ответ №1:
Этот запрос:
INSERT INTO [dbo].Users
VALUES ('" ClsGlobal.sumScore "','" ClsGlobal.DoneLevels "')
WHERE [userName]= '" ClsGlobal.userName;
Не имеет смысла. INSERT
вставляет новые строки, поэтому WHERE
не подходит.
Возможно, вы хотите UPDATE
:
UPDATE dbo.Users
SET sumScore = ?,
DoneLevels = ?
WHERE userName = ?;
Вы должны передавать ClsGlobal.sumScore
, ClsGlobal.DoneLevels
, и ClsGlobal.userName
в качестве параметров, а не перегружать строку запроса.
Комментарии:
1. Добавляя, что с помощью SqlClient маркеры параметров называются (например
@SumScore
), а не?
.