2013-03-14 74 views
0

對於下面的代碼,我得到的錯誤SQL語法錯誤手動檢查

你必須與你的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法使用近「名」,「分數」的手冊)VALUES(「該隱」,「0」)在1號線

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)';'當我運行程序。我看了谷歌,但大多數的建議是引號,我已經改變,並重新改變他們,但無濟於事。

感謝

回答

1

使用反引號逃逸塔(和表)的名稱,而不是報價

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

太棒了!非常感謝你!我會在9分鐘內接受答案。再次感謝。 – 2013-03-14 18:47:00

+0

對不起,任何想法如何當結果已被添加到數據庫時可以彈出一條消息? – 2013-03-14 18:50:39

+0

在行'insertCommand.ExecuteNonQuery();' – 2013-03-14 18:53:02

1

單詞列名不需要進行轉義(我不認爲MySQL允許它,但我可能是錯的),因此,這應該工作:

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

當你運行一個select聲明你可以給一個別名爲列,使用空格,但我只是躲得一般來說。