[英]“Syntax error in INSERT INTO statement” error when I try to insert date to Access database by C#
[英]Debug “Syntax error in INSERT INTO statement” in C# when submitting data to Access Database using OleDbConnection
我首先进入C#和Access数据库。 这对我来说是全新的,因此我建立了一个小型测试数据库以使用小型模板。 我试图弄清楚为什么我总是收到由ExecuteNonQuery()方法触发的语法错误。 任何帮助和见解将不胜感激。
编辑:解决:这是这种情况的工作代码。 感谢所有帮助!
public void addToDb()
{
String first = "John";
String last = "Doe";
String testPath = GVar.TEST_FILEPATH + GVar.TEST_DATABASE;
String strCommand = "INSERT INTO ID ([First], [Last]) Values(@First, @Last)";
OleDbConnection dbTest = null;
OleDbCommand cmd = null;
try
{
dbTest = new OleDbConnection(GVar.OLE_DB_WRITE + testPath);
dbTest.Open();
cmd = new OleDbCommand(strCommand, dbTest);
cmd.Parameters.AddWithValue("@First", first);
cmd.Parameters.AddWithValue("@Last", last);
cmd.ExecuteNonQuery();
Console.WriteLine("Data Added");
}
catch (Exception ex)
{
Console.WriteLine("Db Test: " + ex.Message);
}
dbTest.Close();
}
当CommandType设置为Text时,OLE DB .NET Provider不支持将命名参数传递给SQL语句或OleDbCommand调用的存储过程的命名参数。 在这种情况下,必须使用问号(?)占位符。 例如:
在客户ID =?的情况下从客户中选择*
因此,将OleDbParameter对象添加到OleDbParameterCollection的顺序必须直接对应于命令文本中参数的问号占位符的位置。
除此以外,我在您的INSERT
语句中没有看到任何错误。
cmd.CommandText = "INSERT INTO Identity ([First],[Last]) VALUES(?, ?)";
cmd.Parameters.AddWithValue("@First", first);
cmd.Parameters.AddWithValue("@Last", last);
cmd.ExecuteNonQuery();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.