控制SQL数据库中的重复项

时间:2012-05-15 13:46:43

标签: c# sql

我创建了一个用于控制和录制非接触式卡的应用程序。当卡按下读卡器时,我的应用程序会记录卡的序列号(如果读取序列号,卡正常运行)并将其存储到本地SQL数据库中。

这一切都运行正常,有一个我无法解决的错误。我将序列号列标记为主键,以便在读取同一张卡时,将抛出异常,表明该特定卡已被记录。

持续发生的奇怪事情是这个异常被正好抛出6次(每次),然后它停止出现并且重复的卡被记录为正常的。造成这种情况的原因是,还有其他方法来控制输入并警告用户重复。

我在VS 2010和SQL Server 2005中使用C#来创建我的应用程序,我该如何解决?

2 个答案:

答案 0 :(得分:2)

我会建议你另一个方法

让insert break来检查重复项并不是一个好主意。

在使用select插入之前检查副本,这应该可以解决问题。

答案 1 :(得分:0)

根据Jesters的建议,我建议你做的是创建一个存储过程,首先检查数据是否存在,如果是,则返回BIT 0如果否则插入数据并返回BIT 1。

然后在你的代码隐藏中,你可以调用它并检查结果,真值表示插入数据,假值表示它已经存在。

这样可以避免应用程序抛出异常等,并且通常会使程序结构更加可靠,因为您不允许首先发生错误。

如果您的表格已正确编入索引,则在尝试插入之前检查数据是否存在不应影响性能。