无法使用C#将数据写入MS Access数据库

时间:2016-01-11 13:16:37

标签: c# visual-studio ms-access database-connection

我已经建立了一个成功的登录表单。但我希望有机会创建一个新帐户。我有两个文本框;一个用于用户名,一个用于密码。单击该按钮后,需要将此数据写入MS Access 2002-2003数据库文件。但是,当我单击按钮时,我收到以下错误消息:

  

未处理的类型' System.Data.OleDb.OleDbException'发生在System.Data.dll中   附加信息:INSERT INTO语句中的语法错误。

这是我正在使用的代码:

    private void buttonRegistreren_Click(object sender, EventArgs e)
    {
        connection.Open();
        OleDbCommand command = new OleDbCommand();
        command.Connection = connection;
        command.CommandText = "INSERT INTO Gebruikers (Username, Password) values('" + textBoxUserregist.Text + "', '" + textBoxPassregist.Text + "')";
        command.ExecuteNonQuery();
        connection.Close();
    }

有人知道我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

密码是MS-Access中的保留关键字,您需要将其封装在方括号

之间
command.CommandText = "INSERT INTO Gebruikers (Username, [Password]) ...."

表示请记住,构建sql命令的字符串连接是一种非常糟糕的做法,并导致很多问题。尽快开始使用参数,如下例所示

private void buttonRegistreren_Click(object sender, EventArgs e)
{
    using(OleDbConnection cn = new OleDbConnection(.....))
    using(OleDbCommand command = new OleDbCommand(@"INSERT INTO Gebruikers
                    (Username, [Password]) values(@name, @pwd)", cn))
    {
        cn.Open();
        command.Parameters.Add("@name", OleDbType.NVarWChar).Value =textBoxUserregist.Text ;
        command.Parameters.Add("@pwd", OleDbType.NVarWChar).Value = textBoxPassregist.Text;
        command.ExecuteNonQuery();
    }
}