我们在产品上使用QR代码。除了一个唯一的序列号外,每个QR代码实际上都是相同的。
我正在编写一个用于构建产品工具包的C# Win Form程序。然后,他们扫描出每一个产品内的工具包,以完成订单。有些工具包包含同一产品的倍数。我想防止用户简单地扫描相同的QR代码,以便在一个工具包中具有倍数的产品。。
我将为这个Win应用程序创建一个数据库,以存储哪些qr代码已从工具包所需的总数量中被扫描。
为了确保没有扫描相同的QR代码,我是否正确地假设我只需要对数据库中先前扫描的序列号进行一次检查?如果是的话,如何才是最有效的方法?
谢谢
发布于 2017-04-19 11:05:41
这取决于QR代码如何存储在数据库中,以及每个QR代码有何不同。它是作为数据/图像存储的吗?哪些确切的数据被编码到QR代码中?
您提到QR代码实际上是相同的,但是它们有一个唯一的序列号。这个序列号是否存储在QR代码中?如果是这样,那么在解码之后,您可以简单地搜索数据库中的序列号。
发布于 2017-04-19 11:07:51
就效率而言,使用唯一的序列号作为表中的标识符列。然后,查询该序列号,如果查询不返回任何内容,则只批准扫描。但是,它并不完全安全,因为一旦您试图将值写入表,它可能已经由另一个调用方编写了。
另一方面,如果您对列有唯一的约束,您可以尝试插入扫描的序列号,如果它已经存在,则让它失败。
发布于 2017-04-19 11:50:32
如果您有一台用户/计算机用于扫描每个工具包,而扫描每个工具包的过程有一个明确的开始或结束,并且存储的数据并不庞大,并且扫描的每个组件都将在一个会话中被扫描,我会将扫描的每一项存储在内存中的集合中,直到整个工具包被扫描为止,然后异步地将完成的工具包写入数据库。
https://stackoverflow.com/questions/43493821
复制相似问题