Oledb ExecuteNonQuery INSERT INTO 语法错误

问题描述 投票:0回答:1

我正在尝试使用 C# 将值插入到 Access 数据库中,但是出现语法错误数据库中的所有数据类型和 C# 代码都是正确的。

这是错误信息:error message

这里是代码:

 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虽然应该是数字,但是我在数据库中把它们变成了字符串。成本是双倍的。 我试过在值上使用括号以防万一它们是保留字,但这也不起作用。

c# sql-insert oledbcommand
1个回答
0
投票

从报错信息来看,语法错误似乎是因为“Order”是SQL中的保留关键字,不应该在没有正确转义的情况下用作表名。

要解决此问题,您可以尝试将表名“Order”括在方括号 [] 中,如下所示:

 string insert =
"INSERT INTO [Order] (OrderTime, TableNumber, Cost) " +
"VALUES (@OrderTime, @TableNumber, @Cost)";

或者,您也可以将表名更改为其他非 SQL 保留关键字的名称。

请注意,如果您的代码中有其他 SQL 语句,您还应该检查它们是否使用任何保留关键字作为表名或列名,并进行必要的更改以避免语法错误。

© www.soinside.com 2019 - 2024. All rights reserved.