vb.net - 为什么 Access 数据库引擎会给出一个奇怪的错误?
问题描述
以下代码因此错误而崩溃:
System.Data.OleDb.OleDbException:'参数太少。预计 1'
Dim selectString As String = "SELECT * FROM Products WHERE id = ?;"
Dim cmd As OleDbCommand = New OleDbCommand(selectString, dbOleDB)
cmd.Parameters.AddWithValue("ID", id)
Dim reader As OleDbDataReader = cmd.ExecuteReader()
如果我对 Access 数据库引擎安装进行修复,则错误会消失一天。
同样的事情发生在多台运行不同版本 Windows 的机器上。
这个问题开始于大约 2 周前。
有人知道发生了什么吗?
解决方案
OleDbCommand 对命名参数的行为不正确。
试试这个,
Dim selectString As String = "SELECT * FROM Products WHERE id = ?;"
Dim cmd As OleDbCommand = New OleDbCommand(selectString, dbOleDB)
cmd.Parameters.Add("@ID", OleDbType.BigInt).Value = id; '@ID essentially means nothing here. The Adds you make have to be sequential
Dim reader As OleDbDataReader = cmd.ExecuteReader()
推荐阅读
- css - 如何更改r中多边形形状周围的传单图颜色?
- usrp - B210 接收时 RX LED 熄灭
- powerbi - 如何计划 Power BI 报表的刷新
- css - 在段落末尾添加阅读更多
- php - 如何在 Laravel 8 的 api 路由中获取当前用户的 id?
- arrays - 通过指向 C 中函数的指针传递整个一维数组,然后通过它获取数组输入
- python - 为用户输入调整 Keras Seq2Seq 教程
- c# - IIS 应用程序池在中间件记录 OperationCancelledException 约 20 秒后崩溃
- r - 如何在 visreg 散点图上添加方程
- php - 模态显示第一个模态而不是第二个模态的文本