Почему Access Database Engine выдает странную ошибку? - PullRequest
1 голос
/ 19 февраля 2020

Следующий код завершает работу с этой ошибкой:

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 недели go.

Кто-нибудь знает, что происходит?

1 Ответ

0 голосов
/ 20 февраля 2020

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()
...