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

本文关键字:语法 错误 数据 ms 访问表 插入 | 更新日期: 2023-09-27 17:50:18

我有以下代码:

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();

但是当我试图插入数据时,我在插入查询中得到异常语法错误。我做错了什么?

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

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+"')";

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