答案 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来处置您的OleDbConnection
和OleDbCommand
。
答案 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));