0

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

所有这一切都很好,只有一个我无法解决的错误。我将序列号列标记为主键,这样如果读取同一张卡,就会抛出异常,表明该特定卡已被记录。

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

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

4

2 回答 2

2

我会建议你另一种方法

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

只需在使用 select 插入之前检查重复项,这应该可以解决问题。

于 2012-05-15T14:02:41.683 回答
0

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

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

这使您的应用程序免于引发异常等,并且通常使程序结构更加稳固,因为您首先不允许错误发生。

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

于 2012-05-15T14:20:42.347 回答