0

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

どんな助けでも大歓迎です。ありがとう

4

1 に答える 1