无法使用DataAdaptor.Fill命令和sqlite捕获异常

时间:2013-09-17 07:59:33

标签: vb.net sqlite dataset

我正在试着找出我的应用程序错误。基本上我在尝试从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.Data.SQLite.dll中出现'System.Runtime.InteropServices.SEHException'类型的第一次机会异常

但是,这个错误没有在catch语句中捕获,而是我的代码将直接跳到cell_formatting事件并尝试用空数据填充我的gridview。我的form_load事件的一部分是关闭并填充dasSpice数据集,然后返回以填充另一个数据集,最后更新gridview。但是,因为它炸毁了dasSpice数据集,它永远不会返回填充第二个数据集,因此给我一个空的gridview。

无论如何我可以捕获此错误,或者允许我的代码返回到form_load事件以继续使用其余代码?如果需要,我可以提供更多细节。

任何帮助都会非常感激,因为我完全不知所措。感谢

2 个答案:

答案 0 :(得分:0)

由于引发的异常是SEHException,您正在捕获SqlLiteException。

试试这个:

Catch ex As Exception

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

然后在......中查看异常内部以查看您可以找到的信息。 How should you diagnose the error SEHException - External component has thrown an exception

您的查询中还有什么?

答案 1 :(得分: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 blocks