目前功能是基本的。我可以相当简单地添加行,当我这样做时我更新了一个列表框,但是如果我删除一行,或者在没有初始行的情况下启动程序(来自插入查询),SQLiteDataReader 会抛出这个异常:
Object reference not set to an instance of an object.
它非常奇特,如果我在没有初始行(在创建数据库时添加)的情况下启动程序,就会引发错误。每次我启动程序并且数据库不是新创建的时候,它也会发生。如果我创建数据库,关闭程序,重新打开程序并连接到数据库,阅读器会给出该错误。
这是一些代码。
SQLiteConnection db = new SQLiteConnection("Data Source=test.sqlite;Version=3;");
SQLiteCommand cmd;
query = "SELECT * FROM Table";
db.Open();
SQLiteDataReader reader = cmd.ExecuteReader(); //This is the line that throws
while (reader.Read())
{
//read and do work. (This section has been tested and works
}
reader.Close()
db.Close();
可能值得注意的是,如果表刚刚创建,查询工作正常。只有在删除了一行,或者程序在没有创建新数据库的情况下重新启动时才会弹出此错误。似乎无法理解它为什么这样做。看起来不太合乎逻辑,但我想这是一个愚蠢的错误。
所有帮助表示赞赏。
参考:使用 System.Data.SQLite.dll