При использовании поставщика OleDb
(в частности, с MS-Access, но я не могу исключить то же самое для других поставщиков) механизм синтаксического анализа проверяет, присутствует ли каждая часть списка столбцов в предложении SELECT
в запрашиваемой таблице. Если по какой-либо причине (обычно из-за опечатки в имени столбца) механизм не может найти соответствующий столбец, он рассматривает это имя как параметр и ожидает, что параметр предоставлен в коллекции OleDbCommand.Parameters
.
Если параметры отсутствуют, то вылетает вышеуказанная ошибка.
Другая возможность заключается в том, что вы не инициализируете переменную cmd
в приведенном выше коде.
Это означает, что вы используете глобальную переменную для OleDbCommand
.
Переменная, которая могла использоваться для другого запроса и ее коллекция параметров не пуста.
Попробуйте добавить эту строку перед выполнением запроса
cmd.Parameters.Clear();
cmd.CommandText = "SELECT Imeiprezimeautora FROM Tabela1";
Однако, если это проблема, то я настоятельно рекомендую вам переосмыслить этот подход и избегать глобальных переменных для такого рода работы.
При локальном определении и инициализации OleDbCommand нет измеримого снижения производительности.
person
Steve
schedule
09.12.2013
Tabela1
нет поля с именемImeiprezimeautora
- person Steve   schedule 09.12.2013