在OLEDBException -2147467259下捕获特定异常

时间:2013-07-16 13:16:38

标签: .net sql vb.net error-handling oledb

我有一个使用OleDB连接到Access数据库的应用程序。我正在尝试创建一些错误处理来插入重复记录,其中有一个唯一索引。

当抛出此错误时,我在异常上收到错误代码-2147467259。但是其他错误也会产生相同的错误代码;例如,数据库已满或缺少列。

有没有办法在不使用错误消息本身的情况下确定这些不同的错误,我所说的每一部分都是不可靠的。

我查看了.innerexception,在插入重复项的情况下,没有内部异常。

我还查看了.SQLState属性,看来这是一个在4.0框架中并没有真正使用的旧方法。我可以应用这个,但我可能会错误地使用,而不是我想要的尝试捕获。

我的代码:

            Try
                Sender.cmdOLEDB.ExecuteNonQuery()
            Catch ex As OleDbException

            End Try

1 个答案:

答案 0 :(得分:0)

冒着那个坚持你的潜在问题是真正问题的人的风险......数据库是真正的问题。

我假设你有某种自然键(否则你不会得到重复的键异常)而不是生成的键。我建议更改表格,这样你就不必担心试图解决为什么插入因PK坏而失败的原因。

我见过类似于这种逻辑的东西,其中一位同事实施了一个保存方法:

try
{
    insertCommand.ExecuteNonQuery();
}
catch(Exception ex)
{
    updateCommand.ExecuteNonQuery();
}

哪个......糟糕。