【发布时间】:2021-06-01 06:18:06
【问题描述】:
我在方法中得到了这段代码:
string tableName = "messages_user-test";
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\janke\\source\\repos\\Unichat\\Unichat\\bin\\Debug\\history.accdb;Persist Security Info=False;");
conn.Open();
OleDbCommand comm = new OleDbCommand();
comm.Connection = conn;
string writestring = "insert into " + tableName + " ([from], [to], [datetime], [message]) values (@from, @to, @datetime, @message);";
Console.WriteLine(writestring);
comm.CommandText = writestring;
comm.Parameters.AddWithValue("@from", from);
comm.Parameters.AddWithValue("@to", to);
comm.Parameters.AddWithValue("@datetime", date);
comm.Parameters.AddWithValue("@message", text);
comm.ExecuteNonQuery();
comm.Dispose();
conn.Close();
当我执行程序时,我在comm.ExecuteNonQuery(); 收到此错误
System.Data.OleDb.OleDbException: "Syntaxerror in INSERT INTO statement."
我是 OleDB 的新手,我已经阅读了数百个关于此错误的线程,但对我没有任何帮助。
【问题讨论】:
-
我不是 100% 确定,但我发誓我记得没有使用 Access 命名参数占位符,并且必须在查询字符串中使用
?作为占位符。我可能是错的,因为我接触访问权限已有大约 10 年了。 -
我已经试过了,但是没用。
-
a) 如上所述使用
?。 b) 将messages_user-test更改为[messages_user-test]。这行得通吗? -
是的,这对我有用。非常感谢!这已经困扰我好几天了!
标签: c# database ms-access oledb