0

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

您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'Name','Score') 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);”中 当我运行程序时。我在谷歌上查看,但大多数建议都是关于引号的,我已经更改并重新更改它们但无济于事。

谢谢

4

2 回答 2

1

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

INSERT INTO highscore(`Name`,`Score`) VALUES (@Name, @Score)
于 2013-03-14T18:41:54.853 回答
1

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

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

您可以在运行select语句时使用空格为列指定别名,但我通常会避免使用它们。

于 2013-03-14T18:50:31.380 回答