我收到错误“关键字附近的语法不正确'''

问题描述 投票:0回答:1

我正在尝试更新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;
}

我试着把[和]或(和)接近用户名这个词,但这仍然没有用。

sql-server wpf syntax-error
1个回答
2
投票

这个查询:

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.sumScoreClsGlobal.DoneLevelsClsGlobal.userName作为参数传递,而不是更改查询字符串。

© www.soinside.com 2019 - 2024. All rights reserved.