如何将数据成功保存到访问中?

时间:2014-11-23 12:43:20

标签: c# ms-access ms-access-2010

如何让此查询正常工作?我无法将任何数据保存到数据库,不断收到错误:“INSERT INTO语句中的语法错误”

this helped a lot too

数据类型是我的问题,谢谢你们!

3 个答案:

答案 0 :(得分:1)

VALUES子句应该是括在括号()中的项目列表。你们省略了结束)

答案 1 :(得分:1)

您真正的问题是忘记在)部分结束时使用VALUES

INSERT INTO SetUp_Track
values(@Operat, @Maching, @Last_Good_Time,
@First_Good_Time, @Post_Number, @Created
                                        ^here

始终先在数据库管理器中尝试命令。但更重要的是,OleDbCommand不接受命名参数。

来自OleDbCommand.Parameters property

  

OLE DB .NET提供程序不支持传递的命名参数   SQL语句或由a调用的存储过程的参数   CommandType设置为Text时的OleDbCommand。在这种情况下,   应使用问号(?)占位符必须。例如:

     

SELECT * FROM Customers WHERE CustomerID =?

     

因此,将OleDbParameter对象添加到的顺序   OleDbParameterCollection必须直接对应于的位置   命令文本中参数的问号占位符。

还可以使用using statement来处置您的OleDbConnectionOleDbCommand

答案 2 :(得分:0)

尝试不使用命名参数:

ad.InsertCommand = new OleDbCommand("INSERT INTO SetUp_Track (Operat, Maching, Last_Good_Time, First_Good_Time, Post_Number, Created) values (?, ?, ?, ?, ?, ?)", con);

此外,

.Parameters.AddWithValue中的所有参数都以String类型

发送

检查所有这些参数是否也在db中定义为String类型,

例如,如果Post_Number在db中为Integer,则应将String转换为Integer,然后使用.Parameters.AddWithValue

ad.InsertCommand.Parameters.AddWithValue("@Post_Number", Convert.ToInt32(Post_NumberTxtbx.Text));