0

以下のコードでは、エラーが発生します

SQL構文にエラーがあります。1行目の'Name'、'Score')VALUES('cain'、 '0')の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

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

1語の列名をエスケープする必要はありません(MySQLで許可されているとは思いませんが、間違っている可能性があります)。したがって、これは機能するはずです。

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

selectステートメントを実行するときにスペースを使用して列にエイリアスを指定することもできますが、一般的にはスペースを使用しないようにします。

于 2013-03-14T18:50:31.380 に答える