Я получаю сообщение об ошибке "Неверный синтаксис рядом с ключевым словом" где "" - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь обновить таблицу 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:\Users\Avraham\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB\New Database.mdf ");

    sqlConnection.Open();                                           

    SqlCommand sqlCommand = sqlConnection.CreateCommand();          
    sqlCommand.CommandText = selectSQL;                            

    SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand); 
    sqlDataAdapter.Fill(dataTable);                                 

    return dataTable;
}

Я бы попытался получить [и] или (и) рядом со словом username, но это все равно не сработало.

1 Ответ

2 голосов
/ 14 апреля 2019

Этот запрос:

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 в качестве параметров, а не обрабатывать строку запроса.

...