Входной массив длиннее, чем количество столбцов в этой таблице - PullRequest
1 голос
/ 23 февраля 2011

Я недавно начал использовать SQLite и начал интегрировать его в проект C #, над которым я работаю.

Однако, случайно мой проект выдает исключение:

Входной массив длиннее, чем количество столбцов в этой таблице.

Мне трудно пытаться отследить проблему, потому что она, кажется, генерируется случайным образом.

DataTable table = new DataTable();

//exception is thrown here
table = Global.db.ExecuteQuery("SELECT * FROM vm_manager"); 

Некоторые данные, которые возвращаются из этого запроса, выглядят следующим образом:

http://i.stack.imgur.com/9rlLN.png

Если у кого-либо есть какие-либо советы, я был бы признателен.

РЕДАКТИРОВАТЬ: Я не могу показать функцию выполнения запроса, поскольку она находится внутри DLL из следующей оболочки SQL Lite http://www.codeproject.com/KB/database/cs_sqlitewrapper.aspx

РЕДАКТИРОВАТЬ 2 Стебли проблемыиз новой функции массива записей внутри этой конкретной оболочки SQL Lite.

1 Ответ

0 голосов
/ 23 февраля 2011

Основываясь на реализации вашей обертки SQLite, он добавляет столбцы к своему внутреннему DataTable, прежде чем вернуться к вашему. Я подозреваю, что ваш дефект находится в обертке, а не в вашем коде. Я копался в источнике вашего SQLiteWrapper из CodeProject; здесь, в PasteBin: http://pastebin.com/AjGaX0kL

Я подозреваю, что ошибка возникает в том вспомогательном методе ExecuteQuery() или его помощниках: ReadFirstRow() или ReadFirstRow(), а не в вашем коде. Оберните ваш код в try catch. Проверьте Exception, и свойства сообщат вам, в каком методе на самом деле создается это исключение.

Вероятно, вы столкнулись с дефектом в этом классе оболочки.

try
{
    DataTable table = Global.db.ExecuteQuery("SELECT * FROM vm_manager");
}
catch (Exception ex){
//who threw this from which method and line?
} 

Если этот поставщик SQLite не работает, предложите оценить:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...