对于下面的代码,我收到错误
您的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);'中当我运行程序时。我看了谷歌,但大多数建议是引用标记,我已经改变并重新改变它们但无济于事。
由于
答案 0 :(得分:1)
使用反引号来转义列(和表)名称,而不是引号
INSERT INTO highscore(`Name`,`Score`) VALUES (@Name, @Score)
答案 1 :(得分:1)
单字列名称不需要转义(我不认为MySQL允许它,但我可能错了);因此,这应该有效:
INSERT INTO highscore(Name,Score) VALUES (@Name, @Score);
您可以在运行select
语句时使用空格为列提供别名,但我一般只是避免使用空格。