使用bytea列

时间:2015-04-22 09:07:05

标签: java postgresql barcode bytea

我有一个java应用程序,可以在从供应商处收到库存商品时插入库存商品。我捕获产品的条形码图像以及其他信息(名称,价格等等)。我在PostgreSQL数据库中保存条形码图像通知bytea。由于我还没有条形码扫描仪,我正在拍摄条形码图像并按如下方式插入。

  //code extract
    File imgFile = new File(barcodeImage.jpg);
    FileInputStream fin=new FileInputStream(imgFile);
    pstmt2.setBinaryStream(19, fin,  (int) imgFile.length());  //inserts      into barcodeImage - bytea column

我现在想要使用我保存的条形码图像从数据库中检索产品。类似的东西:

         select * from stock_item where barcodeImage=***

如何使用barcodeImage(bytea)列过滤数据?就像条形码扫描仪的工作原理一样。

2 个答案:

答案 0 :(得分:0)

唯一的方法是扫描条形码图像并将代码存储为varchar。 IMHO

答案 1 :(得分:0)

如果您想在数据库中执行此操作,则需要一个可以解码光栅图像(PNG,JPEG等)条形码的库,并且您需要通过过程语言将其公开为PostgreSQL函数(PL / Python,PL / Perl,C等)。

我个人建议在数据库中执行此操作。将工作交给一个外部帮助程序池,每个程序都分析一段代码,并使用图像中的代码(如果有)更新数据库。这为您提供了更多语言选择,将数据库与条形码解码软件中的任何崩溃隔离开来等。

我的第一个搜索发现zxing,一个用于条形码解码的Java库。因此,我可能会使用PgJDBC来生成一个简单的工作流程,该流程获取条形码图像,对其进行解码,并使用已解码的条形码更新行。如果出于某种原因,我真的不得不在数据库中执行此操作,我要么使用PL / Java(警告,这里是龙),要么找到条形码解码库以获得更好的数据库语言支持。

WHERE条款中尝试像你所描述的那样,完全没有希望。您必须为每个查询中的每个图像解码条形码。完全无法管理。一个功能索引可以工作,但是在面对条形码库等的更新时,创建和噩梦是非常昂贵的。你需要预处理它。