c# INSERT INTO语句语法错误
本文关键字:语法 错误 语句 INTO INSERT | 更新日期: 2023-09-27 18:10:21
我有错误在行:ins.ExecuteNonQuery().ToString();OledDbException was unhandled in INSERT INTO语句语法错误。 如何解决这个问题?string strOleDbConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:''Project.mdb";
OleDbConnection objConnection = new OleDbConnection(strOleDbConnectionString);
string newTagID = textBox1.Text;
string newUser = textBox2.Text;
string newAge = textBox3.Text;
string newPhoneNumber = textBox4.Text;
string insertString = "INSERT INTO jiahe ([Tag ID], User, Age, [Phone Number]) VALUES ('" + newTagID + "', '" + newUser + "', '" + newAge + "', '" + newPhoneNumber + "')";
OleDbCommand ins = new OleDbCommand(insertString, objConnection);
ins.Connection.Open();
ins.ExecuteNonQuery().ToString();
ins.Connection.Close();
您的问题可能是以下三个之一:
- 完全语法错误,不清楚地看到丑陋的未参数化SQL语句:p
-
newUser
或其他字段在某处有'
,并且正在搞砸语法。 - 您正在尝试插入一个数值(
Age
?)作为字符串。
您应该可以轻松地解决前两个问题:在insertString
语句构造之后创建一个断点,并检查字符串实际包含的内容。第三个更容易检查,只需查看数据库中表字段的数据类型。
尽管如此,您应该更改命令的使用,以使用参数,而不是使用字符串连接构建查询字符串(这容易受到sql注入攻击)。
这个问题很可能是因为[Tag ID], User, Age, [Phone Number]不是全部字符串。在SQL中,任何非字符串列数据都不应该用引号(')包装。
修复当前问题(假设[Tag ID]是一个整数):
string insertString = "INSERT INTO jiahe ([Tag ID], User, Age, [Phone Number]) VALUES (" + newTagID + ", '" + newUser + "', '" + newAge + "', '" + newPhoneNumber + "')";
然而,你应该结构化你的代码,以避免sql注入,有更干净的代码,也不要担心引号:
string insertString = "INSERT INTO jiahe ([Tag ID], User, Age, [Phone Number]) VALUES (@TagID, @User, @Age, @PhoneNumber)";
OleDbCommand ins = new OleDbCommand(insertString, objConnection);
ins.Parameters.Add(new OleDbParameter("@TagID",newTagID);
ins.Parameters.Add(new OleDbParameter("@User",newUser);
ins.Parameters.Add(new OleDbParameter("@Age",newAge);
ins.Parameters.Add(new OleDbParameter("@PhoneNumber",newPhoneNumber);
ins.Connection.Open();
ins.ExecuteNonQuery();
ins.Connection.Close();