SQL语法错误手动检查

时间:2013-03-14 18:40:54

标签: c# mysql

对于下面的代码,我收到错误

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在“名称”,“分数”附近使用正确的语法。在第1行使用VALUES('cain','0')

private void btnSubmitScore_Click(object sender, EventArgs e)
{
    string connStr = "server=bel.sunderland.ac.uk; " +
                     "database=bg30xw; " +
                     "uid=USERNAME; " +
                     "pwd=PASSWORD;";

    string query = "INSERT INTO highscore('Name','Score') VALUES (@Name, @Score);";

    using(MySqlConnection myconn = new MySqlConnection(connStr))
    {
        Console.WriteLine(query);
        MySqlCommand insertCommand = new MySqlCommand(query,myconn);
        insertCommand.Parameters.AddWithValue("@Name",sName);
        insertCommand.Parameters.AddWithValue("@Score",iTotalScore);

        try
        {
            myconn.Open();
            insertCommand.ExecuteNonQuery();

        }
        catch (MySqlException ex)
        {
            MessageBox.Show(ex.Message);
        }
        myconn.Close();
    }

错误显示在'messagebox.show(ex.message);'中当我运行程序时。我看了谷歌,但大多数建议是引用标记,我已经改变并重新改变它们但无济于事。

由于

2 个答案:

答案 0 :(得分:1)

使用反引号来转义列(和表)名称,而不是引号

INSERT INTO highscore(`Name`,`Score`) VALUES (@Name, @Score)

答案 1 :(得分:1)

单字列名称不需要转义(我不认为MySQL允许它,但我可能错了);因此,这应该有效:

INSERT INTO highscore(Name,Score) VALUES (@Name, @Score); 

您可以在运行select语句时使用空格为列提供别名,但我一般只是避免使用空格。