Firebird 1.5:使用Java比较Blob

时间:2013-08-13 01:46:17

标签: java firebird

在使用Java保存之前,我需要比较blob的内容(如果它已经存在于数据库中)。

以下是我到目前为止所做的事情:

 String id = "";
 String blob_name = "";
 boolean exist = false;
PreparedStatement ps = dbConBuilder.getConnection().prepareStatement("SELECT ID, BLOB_NAME from TBL_BLOB where BLOB_CONTENT = ?");
        InputStream in = new ByteArrayInputStream(getBLOB_Content().getBytes("UTF-8"));
        ps.setBinaryStream(1, in, (int) getBLOB_Content().length());
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            id = rs.getString("ID");
            blobname = rs.ge_tString("BLOB_NAME");
            exist = true;
        }

但我收到GDS Exception. 335544384. internal error错误。

请帮忙。提前谢谢。

2 个答案:

答案 0 :(得分:0)

如果查看at Firebird 1.5 error codes,您给出的错误代码是badblk(坏块),这意味着您的byte []可能是错误的大小/形式,并且无法作为ByteArrayInputStream正确读取但是这取决于getBLOB_Content()

您的查询的参数索引也不应该是1,而不是0?

答案 1 :(得分:0)

根据Firebird 2.5语言参考中的note,仅在Firebird 2.0之后才支持blob内容的相等性比较。在此之前,通过使用blob ID(blob的存储位置的类型),比较检查它们是否是相同的blob。

相关问题