我有一个包含一些列的表,并且我在其中 3 列上设置了唯一键,以确保表中没有重复项。现在我想知道是否使用 try / catch 吞下重复项引发的异常并继续更新插入下一行foreach
是个好方法吗?
try {
sqlWrite.ExecuteNonQuery();
} catch (SqlException sqlException) {
if (!sqlException.ToString().Contains("Violation of UNIQUE KEY constraint")) {
MessageBox.Show("Error - " + Environment.NewLine + sqlException.ToString(), "Error SQL");
}
} catch (Exception exception) {
MessageBox.Show("Error - " + Environment.NewLine + exception.ToString(), "Error SQL");
}
或者我应该在插入查询中执行 SELECT 来检查行是否存在以及是否跳过插入?我读过,使用异常作为数据验证的一部分并不好,但有些东西应该这样使用(例如如何在 C# 中检查文件锁定? https://stackoverflow.com/questions/1304/how-to-check-for-file-lock-in-c应该与 try/catch 一起使用)。
如果您有其他方法来执行此操作,则永远不应该抛出和捕获异常。现在你已经拥有了。用它!
您可以创建单个 sql 脚本或存储过程来检查和插入IF NOT EXISTS(SELECT ...)
。进行两个查询速度较慢。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)