我已经建立了一个成功的登录表单。但我希望有机会创建一个新帐户。我有两个文本框;一个用于用户名,一个用于密码。单击该按钮后,需要将此数据写入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();
}
有人知道我做错了什么吗?
答案 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();
}
}