将数据插入ms访问表时出现语法错误

我有以下代码:

OleDbConnection aConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=storage_db.accdb"); string sql = "INSERT INTO Client cname,phone,password) VALUES('"+textBox1.Text+"','"+textBox2.Text+"', '"+textBox3.Text+"')"; aConnection.Open(); OleDbCommand insert = new OleDbCommand(sql, aConnection); insert.ExecuteNonQuery(); aConnection.Close(); 

但是当我尝试插入数据时,我在插入查询中遇到exception语法错误。 我究竟做错了什么?

Password是Access中的保留字,因此您需要将password列包装在查询中的方括号中。 您还需要将要插入数据的列包装到括号中:

 INSERT INTO (Client cname,phone,[password]) VALUES(... 

正如@HarveySpecter在评论中指出的那样,您还应该使用参数化查询而不是连接用户输入,否则您将打开自己的SQL注入攻击。

您的插入语法不正确…您需要()围绕您插入的字段和值子句……

 insert into Client ( cname, phone, [password] ) values ( ?, ?, ? ) 

“?” 是参数的占位符,参数语句必须与“?”的顺序相同 代表。 另外,请注意……如果预期值为数字,日期等,请确保您在参数中设置的值也是正确的数据类型。 但在你的情况下,这些都是基于字符串的。

 OleDbCommand insert = new OleDbCommand(sql, aConnection); insert.Parameters.Add( "parmName", textBox1.Text ); insert.Parameters.Add( "parmPhone", textBox2.Text ); insert.Parameters.Add( "parmPwd", textBox3.Text ); 

试试这个:

 string sql = "INSERT INTO Client (cname, phone, [password]) VALUES('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"')"; 

你忘记了括号。 但最好使用参数查询。