使用C#向Access数据库插入数据时出现OleDb ExecuteNonQuery语法错误
问题解决:Access插入数据的语法错误
你的问题核心是表名Order是Access的保留关键字,直接使用会触发语法解析错误,和数据类型无关。
修复步骤:
- 修改SQL语句,给表名加上方括号
[]:
string insert = "INSERT INTO [Order] (OrderTime, TableNumber, Cost) " + "VALUES (@OrderTime, @TableNumber, @Cost)";
- 额外优化建议:
- 用
using语句自动管理数据库连接和命令的资源释放,避免手动关闭可能导致的连接泄漏:
using (OleDbConnection connection = new OleDbConnection(GlobalData.ConnectionString)) using (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(); }- 虽然你把
OrderTime设为字符串类型,但如果后续要做时间相关查询,建议改为Access的DateTime类型,直接传入DateTime对象而非字符串,避免格式问题:cmnd.Parameters.AddWithValue("@OrderTime", currentOrder.OrderDateTime);
- 用
内容的提问来源于stack exchange,提问作者los
相关产品推荐
相关产品推荐

