ネットワーク ドライブに保存されている 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 イベント ハンドラーにログの詳細を追加しようとしましたが、ログにエラー メッセージ (上記) が返されるだけです。
どんな助けでも大歓迎です。ありがとう