控制 SQL 数据库中的重复项

本文关键字:SQL 数据库 控制 | 更新日期: 2023-09-27 18:34:25

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

所有这些都工作正常,只有一个我无法解决的错误。我将序列号列标记为主键,以便在读取同一张卡时,将引发异常,指示该特定卡已被记录。

不断发生的奇怪事情是,此异常被抛出 6 次(每次),然后它停止出现,重复的卡片被记录为正常卡片。是什么导致了这种情况,是否有其他方法可以控制输入并警告用户重复项。

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

控制 SQL 数据库中的重复项

我建议你再说一句

让插入中断以检查重复项并不是一个好主意。

只需在插入之前检查重复项即可选择,这应该可以解决问题。

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

然后在代码隐藏中,您可以调用 this 并检查结果,true 值表示数据已插入,false 值表示它已经存在。

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

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