0

アプリケーションで発生しているエラーを解決しようとして、髪を引っ張っています。基本的に、SQLite クエリからデータセットを作成しようとすると、ランダム エラーが発生します。テーブルがロックされているなどの理由で SQLite DB から常に結果が返されるとは限らないという事実に対処できますが、コードが失敗し続け、エラーをトラップできません。

私のコードは次のようになります。

            Dim ExQry As New SQLiteCommand(QryString, SQLConnect)
            ExQry.CommandType = CommandType.Text

            Dim da As New SQLiteDataAdapter(ExQry)
            dasSpice.Clear()

            Try
                da.Fill(dasSpice, "Calls") 'Error occurs on this line
            Catch ex As SQLiteException

基本的に、私のコードは da.fill(dasSpice, "Calls") ステートメントに到達し、エラーをスローします。

タイプ 'System.Runtime.InteropServices.SEHException' の初回例外が System.Data.SQLite.dll で発生しました

ただし、このエラーは catch ステートメントではキャッチされませんが、コードは直接 cell_formatting イベントにスキップし、グリッドビューに空のデータを取り込もうとします。私の form_load イベントの一部は、dasSpice データセットにデータを入力してから別のデータセットにデータを入力し、最後にグリッドビューを更新することです。ただし、dasSpice データセットを爆撃するため、2 番目のデータセットにデータを入力するために戻ることはなく、空のグリッドビューが表示されます。

とにかく、このエラーをキャッチしたり、コードが form_load イベントに戻って残りのコードを続行できるようにしたりできますか? 必要に応じて詳細を提供できます。

私はこれで完全に途方に暮れているので、どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

0

それらから例外または基本クラスを正しくキャッチする必要があります。

Try
   ...
Catch ex As SQLiteException 'will handle all SQLiteException (and subclasses not explicitly specified)
   ...
Catch ex As System.Runtime.InteropServices.SEHException 'Catch all SEHException
   ...
Catch ex As ... 'Catch another exception
   ...
Catch ex As Exception 'Catch all remaining exceptions.
   ...
End Try

Try/Catch ブロックを参照してください。

于 2013-09-17T10:01:01.820 に答える
0

発生した例外によって SqlLiteException をキャッチしているのは SEHException です。

これを試して:

Catch ex As Exception

  If TypeOf ex Is SQLiteException Then
    ..  ... blah
  Else
    ' ... not a SQLiteException so do something else...
  End if

次に .... ビットで例外の内部を調べて、見つけられる情報を確認します。SEHException - 外部コンポーネントが例外をスローしたエラーをどのように診断する必要がありますか?

また、あなたのクエリには何がありますか?

于 2013-09-17T08:06:27.800 に答える