java - 为 DB2 和 Oracle 使用 java 插入 BLOB

标签 java oracle jdbc db2 blob

我目前正在验证在 Oracle 上为 DB2 开发的应用程序。因为我们不想维护两个单独的源,所以我需要一些查询来将 blob 插入到一个字段中,这在 oracle 和 db2 中都有效。我没有任何标识符来区分应用程序在哪个数据库下运行。

我在 Oracle 中使用了 utl_raw.cast_to_raw,在 DB2 中使用了 CAST() as BLOB,它们互不兼容。

最佳答案

您将无法找到使用某种类型转换的常见 SQL。但是您可以使用 JDBC 的 setBinaryStream()

使用“普通”SQL 来做到这一点
PreparedStatement pstmt = connection.prepareStatement(
   "insert into blob_table (id, blob_data) values (?, ?)";

File blobFile = new File("your_document.pdf");
InputStream in = new FileInputStream(blobFile);

pstmt.setInt(1, 42);
pstmt.setBinaryStream(2, in, (int)blobFile.length());
pstmt.executeUpdate();
connection.commit();

您可以使用 setBinaryStream(),方法与 UPDATE 语句相同。

关于java - 为 DB2 和 Oracle 使用 java 插入 BLOB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16462060/

相关文章:

Java 9、Hibernate 和 java.sql/javax.transaction

java - BIRT 报告中的 BIRT 框格式

java - Hibernate 映射不工作

java - hibernate 自动增量

php - Zend pdo_oci 和 pdo_mysql 生成不同的查询格式

java - 3DES 加密 Oracle/JAVA 等效

java - JDBC 连接被对等方关闭(奇怪)

java - 如何使用纳秒在 phpmyadmin 中创建时间线?

java - 计算距离 - 即时计算还是在数据输入数据库后立即计算?

Sql:两个日期之间的差异