C# 如何将数据成功保存到access中?
如何使此查询正常工作?我无法将任何数据保存到数据库,不断出现错误:“INSERT INTO语句中的语法错误”C# 如何将数据成功保存到access中?,c#,ms-access,ms-access-2010,C#,Ms Access,Ms Access 2010,如何使此查询正常工作?我无法将任何数据保存到数据库,不断出现错误:“INSERT INTO语句中的语法错误” 数据类型是我的问题,谢谢大家 尝试不使用命名参数: ad.InsertCommand = new OleDbCommand("INSERT INTO SetUp_Track (Operat, Maching, Last_Good_Time, First_Good_Time, Post_Number, Created) values (?, ?, ?, ?, ?, ?)", con);
数据类型是我的问题,谢谢大家 尝试不使用命名参数:
ad.InsertCommand = new OleDbCommand("INSERT INTO SetUp_Track (Operat, Maching, Last_Good_Time, First_Good_Time, Post_Number, Created) values (?, ?, ?, ?, ?, ?)", con);
而且
.parameters.AddWithValue中的所有参数均以字符串类型发送
检查所有这些参数是否也在db中定义为字符串类型
例如,如果Post_Number在db中为整数,则应将字符串转换为整数,然后使用.Parameters.AddWithValue
ad.InsertCommand.Parameters.AddWithValue("@Post_Number", Convert.ToInt32(Post_NumberTxtbx.Text));
VALUES
子句应该是括在括号中的项目列表,()
。您省略了结束语)
您真正的问题是忘记在值部分的末尾使用)
INSERT INTO SetUp_Track
values(@Operat, @Maching, @Last_Good_Time,
@First_Good_Time, @Post_Number, @Created
^here
始终首先在数据库管理器中尝试您的命令。但更重要的是,OleDbCommand
不接受命名参数
从
OLE DB.NET提供程序不支持用于传递的命名参数
由调用的SQL语句或存储过程的参数
CommandType设置为Text时的OleDbCommand。在这种情况下
必须使用问号(?)占位符。例如:
从CustomerID=?的客户中选择*
因此,OleDbParameter对象添加到
OleDbParameterCollection必须直接对应于
命令文本中参数的问号占位符
还可用于处理您的OleDbConnection
和OleDbCommand
该页面经常被引用。不幸的是,当它说“必须使用问号(?)占位符”(我的重点)时,这是误导。它真的应该说“应该使用问号(?)占位符”。?
占位符不是绝对要求。命名参数确实有效,但名称无关;重要的仍然是参数在CommandText中的位置和添加顺序。(这就是为什么我认为应该使用?
,以防止人们产生错误的想法。)@GordThompson是的,你完全正确。使用?
只是参数化OleDbCommand
的常用方法。名字完全被忽略了。唯一的问题是他们的订单。谢谢你们,伙计们,我发现我有几个括号忘了合上;但是,我仍然得到上述错误。@HGtez您尝试过我们的解决方案吗?!老实说,我不确定我是否正确地将数据从我的表单传递到数据库,我已经附加了我正在使用的数据库。谢谢查看此链接以获取日期时间参数:()感谢您帮助了很多伟大的工作!表设置跟踪是否只包括问题中提到的6个字段?这些字段加上数据库上设置为自动编号的ID,我担心这是最后一次好的时间&第一次好的时间,我不确定是否正确地将数据类型传递给数据库。