SQLite连接打开但可以';t读取数据,代码执行停止
本文关键字:数据 读取 代码 执行 连接 但可以 SQLite | 更新日期: 2023-09-27 17:58:06
女士们,先生们,我已经做了几天了,我想不通。我有一个应用程序,可以打开到SQLite数据库的连接,并从表中选择一些数据。连接打开良好。一旦我尝试使用ExecuteReader通过SQLiteDataAdapter或SQLiteCommand对象读取数据,我的代码就会停止执行,就像它到达了最后一条语句一样。没有例外,EventViewer中没有任何内容,等等。它的行为就像它到达了代码的末尾,程序处于空闲状态。
我发现这篇文章与我所经历的行为几乎相同。
关于我所做的事情的一些简短信息:
- 我已经安装了SQLite 32位和64位二进制文件
- 在使用32位SQLite二进制文件时,我尝试将CPU类型设置为x86
- 在使用64位SQLite二进制文件时,我尝试将CPU类型设置为x64
- 我试着使用适配器。Fill(),代码停止
- 我试着使用命令。ExecuteRead(),代码刚刚停止
- 如果我在ExecuteReader()之前没有打开连接,它会爆炸,表明连接没有打开,所以它至少能够通信并知道SQLite是什么,对吧
我的代码:
SQLiteConnection connection = new SQLiteConnection
("Data Source=" + srcFile + ";Version=3;New=False;Compress=True;");
SQLiteCommand command = new SQLiteCommand();
SQLiteDataReader reader = null;
command.Connection = connection;
command.CommandType = CommandType.Text;
command.CommandText = "select * from stuff";
try
{
connection.Open();
reader = command.ExecuteReader(); //<-- CODE APPEARS TO BREAK OUT OF EXECUTION
while (reader.Read())
{
// Do stuff...
}
// Close/Dispose of Connection
}
catch (Exception ex)
{
// Log error...
// Close/Dispose of Connection
}
就像我说的,当命令发出时,代码就会停止执行。ExecuteReader()被执行,或者在我执行适配器时执行。填充()。。。程序仍然在运行,只是没有更多的代码执行,所以读者。从未达到Read()。
试试这个
可能有坏东西在管道里把东西弄乱
finally ()
{
command.Cancel(); // !!!
reader.Dispose();
}
阅读器非常高效,因为它一次可以获得一块数据
因此,可能发生的情况是,数据库可能会在您甚至没有实际读取的行上抛出错误
不是说这就是这里正在发生的事情,而是可能发生的事情。
通过asc和desc设置顺序,看看这是否会改变
和(nolock)。
我最近遇到了这个问题,但我所看到的一切都无法解决。如上所述,我有
while
(reader.read) do some stuff
每次我试着运行这个,它都会爆发,没有错误。
最后,我设置了一个boolean=reader.read来查看值是多少。这是真的。那它为什么不读书呢?只是对于lol,我将while条件设置为:
dim b as boolean = reader.read
while (b) do some stuff
这就奏效了。所以我似乎必须设置reader.read的值,然后引用它。在完成一些操作之后,B被设置为false。
这似乎是不应该做的事情,但它有效。。。。