使用OLEDBPParameter创建查询时出现C#语法错误
我正在使用使用OLEDBPParameter创建查询时出现C#语法错误,c#,ms-access,oledb,syntax-error,oledbcommand,C#,Ms Access,Oledb,Syntax Error,Oledbcommand,我正在使用OleDbParameter构建OleDbCommand以将记录插入MS Access。但是我在执行语句时出现语法错误。如果任何人都能看到是什么阻碍了查询的成功执行,这将是一个巨大的帮助 这是我的代码: string query = "INSERT INTO Customer (customerID, date, time, telephone, fax," + "name, sourceAddress, destAddress, via1, via2, via3,"
OleDbParameter
构建OleDbCommand
以将记录插入MS Access
。但是我在执行语句时出现语法错误。如果任何人都能看到是什么阻碍了查询的成功执行,这将是一个巨大的帮助
这是我的代码:
string query = "INSERT INTO Customer (customerID, date, time, telephone, fax,"
+ "name, sourceAddress, destAddress, via1, via2, via3,"
+ "priority, ourReference) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
OleDbCommand oleDbCommand = new OleDbCommand(query, oleDbConnection);
OleDbParameter customerID = new OleDbParameter();
OleDbParameter date = new OleDbParameter();
OleDbParameter time = new OleDbParameter();
OleDbParameter telephone = new OleDbParameter();
OleDbParameter fax = new OleDbParameter();
OleDbParameter name = new OleDbParameter();
OleDbParameter sourceAddress = new OleDbParameter();
OleDbParameter destAddress = new OleDbParameter();
OleDbParameter via1 = new OleDbParameter();
OleDbParameter via2 = new OleDbParameter();
OleDbParameter via3 = new OleDbParameter();
OleDbParameter priority = new OleDbParameter();
OleDbParameter ourReference = new OleDbParameter();
oleDbCommand.Parameters.Add(customerID);
oleDbCommand.Parameters.Add(date);
oleDbCommand.Parameters.Add(time);
oleDbCommand.Parameters.Add(telephone);
oleDbCommand.Parameters.Add(fax);
oleDbCommand.Parameters.Add(name);
oleDbCommand.Parameters.Add(sourceAddress);
oleDbCommand.Parameters.Add(destAddress);
oleDbCommand.Parameters.Add(via1);
oleDbCommand.Parameters.Add(via2);
oleDbCommand.Parameters.Add(via3);
oleDbCommand.Parameters.Add(priority);
oleDbCommand.Parameters.Add(ourReference);
customerID.Value = 4;
date.Value = "01/01/01";
time.Value = "01:01:01";
telephone.Value = 01010101;
fax.Value = 01010101;
name.Value = "test 4";
sourceAddress.Value = "test 4 source address";
destAddress.Value = "test 4 dest address";
via1.Value = "test 4 via 1";
via2.Value = "test 4 via 2";
via3.Value = "test 4 via 3";
priority.Value = 1;
ourReference.Value = "test 4 ref";
MessageBox.Show(oleDbCommand.CommandText.ToString());
OleDbDataAdapter oleDbDataAdapter = new OleDbDataAdapter(oleDbCommand);
oleDbCommand.CommandText = query;
oleDbConnection.Open();
oleDbCommand.ExecuteNonQuery();
您有13个参数,但只有12个?字段date
和time
是,因此您应该将它们封装在方括号中。(这是语法错误消息的真正来源)
当然,参数的数量应该匹配。(12个占位符vs 13个字段/参数,添加另一个占位符?),但这将给出另一个错误消息,而不是所述的语法错误,因为其他人提到您的参数与占位符不同步,但是,如果您的CustomerID是一个自动编号,则您可以从sql和参数列表中忽略它 考虑到这是一个语法错误,如果您向我们显示查询而不仅仅是参数,这将非常有帮助。很抱歉,我忘记了最重要的部分,我将其编辑到了原始帖子中。我添加了另一个?,因此现在我有13个。但是我仍然在INSERT INTO语句中遇到错误语法错误
是否有方法显示正在执行的sql命令以获取更多线索oleDbCommand.CommandText.ToString()
显示:插入客户(客户ID、日期、时间、电话、传真、姓名、源地址、目的地址、过孔1、过孔2、过孔3、优先级、我们的参考)值(?,,,,,,,,,,,,,,,,,,)
这不是很有帮助。感谢Steve,万无一失!查询现在插入数据库:)
"INSERT INTO Customer (customerID, [date], [time], telephone, fax, name, " +
"sourceAddress, destAddress, via1, via2, via3," + "priority, ourReference) VALUES " +
"(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";