我有一个使用OleDB连接到Access数据库的应用程序。我正在尝试创建一些错误处理来插入重复记录,其中有一个唯一索引。
当抛出此错误时,我在异常上收到错误代码-2147467259。但是其他错误也会产生相同的错误代码;例如,数据库已满或缺少列。
有没有办法在不使用错误消息本身的情况下确定这些不同的错误,我所说的每一部分都是不可靠的。
我查看了.innerexception
,在插入重复项的情况下,没有内部异常。
我还查看了.SQLState属性,看来这是一个在4.0框架中并没有真正使用的旧方法。我可以应用这个,但我可能会错误地使用,而不是我想要的尝试捕获。
我的代码:
Try
Sender.cmdOLEDB.ExecuteNonQuery()
Catch ex As OleDbException
End Try
答案 0 :(得分:0)
冒着那个坚持你的潜在问题是真正问题的人的风险......数据库是真正的问题。
我假设你有某种自然键(否则你不会得到重复的键异常)而不是生成的键。我建议更改表格,这样你就不必担心试图解决为什么插入因PK坏而失败的原因。
我见过类似于这种逻辑的东西,其中一位同事实施了一个保存方法:
try
{
insertCommand.ExecuteNonQuery();
}
catch(Exception ex)
{
updateCommand.ExecuteNonQuery();
}
哪个......糟糕。