使用OleDb的INSERT INTO语句中出现语法错误
本文关键字:语法 错误 语句 OleDb INSERT INTO 使用 | 更新日期: 2023-09-27 18:27:46
您好。我正在尝试制作一个注册页面,并将信息存储在数据库中。我使用Microsoft Access创建了数据库。我得到:
INSERT INTO语句中的语法错误
每次我按下"注册"按钮。我已经试着在网上搜索过类似的问题,发现了一些东西,比如"保留字"answers"一定是你的间距"。我做了这些,但它仍然给了我错误。我是不是错过了什么?
这是代码:
public void InsertRecord()
{
OleDbCommand cmd = new OleDbCommand("INSERT INTO ElemData(StudentID, [Password], [Name], Age, Birthday, Address, FatherName, MotherName, " +
"GuardianName, Class, Section, Email, PhoneNumber, MobileNumber) " +
"VALUES (@studentid, @password, @name, @age, @birth, @address, @father, @mother, @guardian, @classs, @section, @email, @phone, @mobile)", DBConnection.myCon);
cmd.Parameters.Add("@studentid", OleDbType.VarChar).Value = Studentid;
cmd.Parameters.Add("@password", OleDbType.VarChar).Value = Password;
cmd.Parameters.Add("@name", OleDbType.VarChar).Value = Name;
cmd.Parameters.Add("@age", OleDbType.VarChar).Value = Age;
cmd.Parameters.Add("@birth", OleDbType.VarChar).Value = Birth;
cmd.Parameters.Add("@address", OleDbType.VarChar).Value = Address;
cmd.Parameters.Add("@father", OleDbType.VarChar).Value = Father;
cmd.Parameters.Add("@mother", OleDbType.VarChar).Value = Mother;
cmd.Parameters.Add("@guardian", OleDbType.VarChar).Value = Guardian;
cmd.Parameters.Add("@classs", OleDbType.VarChar).Value = Classs;
cmd.Parameters.Add("@section", OleDbType.VarChar).Value = Section;
cmd.Parameters.Add("@email", OleDbType.VarChar).Value = Email;
cmd.Parameters.Add("@phone", OleDbType.VarChar).Value = Phone;
cmd.Parameters.Add("@mobile", OleDbType.VarChar).Value = Mobile;
if (cmd.Connection.State == ConnectionState.Open)
{
cmd.Connection.Close();
}
DBConnection.myCon.Open();
cmd.ExecuteNonQuery();
DBConnection.myCon.Close();
}
Class
和Section
都是保留字。将它们放在方括号中,就像对保留字[Password]
和[Name]
所做的那样。
该页面包含Allen Browne的数据库问题检查器实用程序的链接。如果您有包含Access的Office版本,则可以下载该实用程序,并使用它检查Access数据库文件中的其他问题对象名称。
将您的sql更改为以下
OleDbCommand cmd = new OleDbCommand("INSERT INTO ElemData ([StudentID], [Password], [Name], [Age], [Birthday], [Address], [FatherName], [MotherName], " +
"[GuardianName], [Class], [Section], [Email], [PhoneNumber], [MobileNumber]) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", DBConnection.myCon);
OLE DB.NET提供程序不支持用于传递的命名参数SQL语句或由调用的存储过程的参数当CommandType设置为Text时使用OleDbCommand。在这种情况下必须使用问号(?)占位符。