好的,我确实有一个在数据库中插入数据的 OLEDB 函数。好吧,我知道如何使用 OLEDB 执行 SQL 的常用方法,但我在这里要做的是对查询字符串中的每个数据进行参数化。
现在我在谷歌工作了将近 3 个小时,只知道如何在 OLEDB 中进行参数化查询,但他们都没有和我一起工作。
现在终于我的查询在下面的代码中似乎工作正常,但仍然出现错误
我的功能代码:
private bool dbInsert(int [] inputNumbers, DateTime datetime){
try {
String sql = "INSERT INTO 655(1stNum, 2ndNum, 3rdNum, 4thNum, 5thNum, 6thNum, datedraw) VALUES(?, ?, ?, ?, ?, ? ,?)";
OleDbCommand dbcmd = new OleDbCommand(sql, app.oleDbConn());
dbcmd.Connection.Open();
dbcmd.Parameters.Add("?",OleDbType.Numeric).Value = inputNumbers[0];
dbcmd.Parameters.Add("?",OleDbType.Numeric).Value = inputNumbers[1];
dbcmd.Parameters.Add("?",OleDbType.Numeric).Value = inputNumbers[2];
dbcmd.Parameters.Add("?",OleDbType.Numeric).Value = inputNumbers[3];
dbcmd.Parameters.Add("?",OleDbType.Numeric).Value = inputNumbers[4];
dbcmd.Parameters.Add("?",OleDbType.Numeric).Value = inputNumbers[5];
dbcmd.Parameters.Add("?",OleDbType.DBTimeStamp).Value = datetime;
dbcmd.ExecuteNonQuery();
dbcmd.Connection.Close();
}catch(OleDbException ex){
showPrompt("Error reading the database",Color.Red);
Console.WriteLine(ex.ToString());
}
return true;
}
这是控制台中显示的错误日志:
System.Data.OleDb.OleDbException:标准表达式中的数据类型不匹配。在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) 在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) 在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) 在 System.Data。 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 行为,字符串方法) 中的 OleDb.OleDbCommand.ExecuteCommand(CommandBehavior 行为,Object& executeResult) System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
我的访问数据库文件中我的列的数据类型是从 1stNum 到 6thNum的数字和 datedraw 中的日期/时间,当然 ID 是AutoNumber
参数化查询实现中是否有任何错误?请帮我。
更新
- 我在 Access 文件中将 nums 的OleDBType更改为Numeric