C# - 插入语句中的 oledb 异常语法错误 (0x80040E14)

C# - oledb exception syntax error (0x80040E14) in insert into statement

嗨,我遇到了一个问题:我的 OleDbCommand 不工作。

代码元素:

    private void Btn_Click(object sender, EventArgs e)
    {
        try
        {
            connection.Open();
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = connection;
            cmd.CommandText = "insert into Account (Nick,Password) values ('" + NickEnter.Text + "', '" + PassEnter.Text + "');";

            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error! | " + ex, "Error!");
        }
    }
  • 您正在为列名使用保留字。您需要使用方括号对它们进行转义。
  • 您还应该为您的值使用参数。这可以防止 sql 注入(在可能的情况下),并确保带有单引号的值不会破坏语句。
  • 最后我注意到您有一个名为 password 的字段和一个纯文本值,您永远不应将密码存储为纯文本。而是存储密码的单向哈希。您可以使用许多库。
private void Btn_Click(object sender, EventArgs e)
{
    try
    {
        connection.Open();
        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = connection;
        cmd.CommandText = "INSERT INTO [Account] ([Nick],[Password]) values (?,?);";

        // note that order is critical here
        command.Parameters.Add(new OleDbParameter("@nick", OleDbType.VarChar)).Value = NickEnter.Text;
        command.Parameters.Add(new OleDbParameter("@password", OleDbType.VarChar)).Value = PassEnter.Text;

        cmd.ExecuteNonQuery();
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error! | " + ex, "Error!");
    }
}