输入数组长于此表中的列数

时间:2011-02-22 22:55:44

标签: c# sql database sqlite

我最近开始使用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

如果有人有任何建议,我将不胜感激。

编辑:我无法显示执行查询功能,因为它位于以下sql lite包装器http://www.codeproject.com/KB/database/cs_sqlitewrapper.aspx

中的dll中

编辑2 问题源于此特定sql lite包装器中的新记录数组函数。

1 个答案:

答案 0 :(得分:0)

根据您的SQLite包装器的实现,它会在返回您的内部DataTable之前向其添加列。我怀疑你的缺陷是在包装器中,而不是在你的代码中。我从CodeProject挖掘了SQLiteWrapper的源代码;这是在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提供程序不起作用,建议您评估: