C#仅允许扫描一次qr代码

时间:2017-04-19 10:59:28

标签: c# winforms qr-code

我们在产品上使用QR码。除了唯一的序列号外,每个QR码几乎完全相同。

我正在编写一个用于构建产品KITS的C#Win Form程序。然后他们扫描该KIT中的每个产品以完成订单。有些KITS包含同一产品的倍数。 我想阻止用户只是在KIT中为具有倍数的产品扫描相同的QR码。

我将为此Win App创建一个数据库,用于存储哪些qr代码已经扫描出KIT所需的总量。

为了确保不扫描相同的QR码,我是否可以正确地假设我只需对先前在数据库中扫描的序列号进行检查?如果是这样,那么最有效的方法是什么?

由于

3 个答案:

答案 0 :(得分:0)

这取决于QR码在数据库中的存储方式以及每个QR码的不同之处。它是作为数据/图像存储的吗?什么确切的数据被编码到QR码上?

您提到QR码实际上是相同的,但它们具有唯一的序列号。此序列号是否存储在QR码中?如果是这样,那么解码后您只需在数据库中搜索序列号即可。

答案 1 :(得分:0)

就效率而言,使用唯一的序列号作为表格中的标识符列。然后,查询该序列号,并仅在查询未返回任何内容时批准扫描。但这并不完全安全,因为一旦你试图将值写入表中,它可能已经由不同的调用者编写。

另一方面,如果您对列有唯一约束,则可以尝试插入扫描的序列号 - 如果已存在则让它失败。

答案 2 :(得分:0)

如果您使用单个用户/计算机扫描每个套件,并且扫描每个套件的过程具有明确的开始或结束,并且存储的数据量不大,并且每个套件扫描将是在单个会话中扫描,我会将扫描的每个项目存储在内存中的集合中,直到扫描整个工具包,然后异步将完成的工具包写入数据库。

  • 您可以针对内存中的集合检查每个新代码。
  • 这有助于确保您不会在数据库中拥有部分集合(孤立数据)。
  • 删除错误扫描的项目会更有效率。