尝试从存储在网络驱动器上的 SQLite DB 读取查询时,我似乎收到了随机错误消息。在我的开发机器上,我很少遇到错误,但用户会报告随机错误,例如:
- 无法打开数据库。文件已加密或不是数据库
- 数据库磁盘映像格式错误
- 或者它只是不返回任何数据。
我的代码如下所示:
Private Sub LoadStoreCalls()
Dim tmpID As String
Dim QryString As String
Dim SQLconnect As New SQLite.SQLiteConnection()
SQLconnect.ConnectionString = "Data Source=" & SpiceWorksPath & ";New=False;Compress=True;Read Only=True;"
Try
'Open a connection to the database
SQLconnect.Open()
'Get StoreCode
tmpID = Mid(StoreCode, 2) & "-" & StoreName
QryString = "SELECT id, summary, status, c_location, c_store_device FROM tickets WHERE status = 'open' AND c_location = '" & tmpID & "'"
Dim ExQry As New SQLiteCommand(QryString, SQLconnect)
ExQry.CommandType = CommandType.Text
Dim da As New SQLiteDataAdapter(ExQry)
dasSpice.Clear()
da.Fill(dasSpice, "Calls")
SQLconnect.Close()
Catch ex As Exception
If SQLconnect.State = ConnectionState.Open Then SQLconnect.Close()
MsgBox(ex.Message)
End Try
End Sub
问题是我的应用程序依赖于返回的这些数据来填充 datagridview 控件的其他条目,并且因为我无法使用调试在我的开发机器上复制这个错误,所以我找不到故障发生的位置。
如果用户遇到这些错误之一,他们通常会继续尝试运行查询,最终它会起作用。或者他们只是退出我的应用程序并返回,然后它似乎工作了一段时间。这些错误是随机的,并不总是来自运行相同的查询。
我假设这是由于与共享驱动器上的 SQLite DB 交谈的问题,但我找不到任何有关设置超时的信息。我也无法弄清楚如何“捕捉”错误,因为我自己无法复制它。我尝试将日志记录详细信息添加到 Catch 事件处理程序,但它只是在日志中返回错误消息(如上)。
任何帮助将不胜感激。谢谢