我正在尝试使用 C# 将值插入到 Access 数据库中,但是出现语法错误数据库中的所有数据类型和 C# 代码都是正确的。
这里是代码:
string insert =
"INSERT INTO Order (OrderTime, TableNumber, Cost) " +
"VALUES (@OrderTime, @TableNumber, @Cost)";
OleDbConnection connection = new OleDbConnection(GlobalData.ConnectionString);
OleDbCommand cmnd = new OleDbCommand(insert, connection);
cmnd.Parameters.AddWithValue("@OrderTime", currentOrder.OrderDateTime.ToString());
cmnd.Parameters.AddWithValue("@TableNumber", currentOrder.TableNumber.ToString());
cmnd.Parameters.AddWithValue("@Cost", currentOrder.Cost);
connection.Open();
cmnd.ExecuteNonQuery();
connection.Close();
OrderTime和TableNumber虽然应该是数字,但是我在数据库中把它们变成了字符串。成本是双倍的。 我试过在值上使用括号以防万一它们是保留字,但这也不起作用。
从报错信息来看,语法错误似乎是因为“Order”是SQL中的保留关键字,不应该在没有正确转义的情况下用作表名。
要解决此问题,您可以尝试将表名“Order”括在方括号 [] 中,如下所示:
string insert =
"INSERT INTO [Order] (OrderTime, TableNumber, Cost) " +
"VALUES (@OrderTime, @TableNumber, @Cost)";
或者,您也可以将表名更改为其他非 SQL 保留关键字的名称。
请注意,如果您的代码中有其他 SQL 语句,您还应该检查它们是否使用任何保留关键字作为表名或列名,并进行必要的更改以避免语法错误。