jdbc如何插入clob_让我们回顾一下如何通过JDBC插入Clob或Blob

jdbc如何插入clob

LOB是所有数据库以及JDBC中的PITA。 正确处理它们需要花费几行代码,并且可以确保最终会出错。 因为您必须考虑以下几点:

  • 首先,LOB是繁重的资源,需要特殊的生命周期管理。 分配LOB后,最好也“释放”它,以减轻GC的压力。 本文详细介绍了为什么需要释放吊球
  • 分配和释放吊球的时间至关重要。 它的寿命可能比ResultSetPreparedStatementConnection / transaction中的任何一个更长。 每个数据库都单独管理这样的寿命,在极端情况下,您可能必须阅读规格
  • 对于中小型LOB,您可以使用String而不是Clobbyte[]代替Blob ,但这可能并非总是如此,甚至可能会导致一些令人讨厌的错误,例如Oracle可怕的ORA-01461&#x
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaBlobClobJDBC API 中的两种数据类型,Blob 表示二进制数据,Clob 表示文本数据。InputStream 和 byte[] 则是 Java 中常用的二进制数据处理方式。 下面是 Blob 和 byte[] 之间的相互转换: 1. Blob 转 byte[] ```java Blob blob = resultSet.getBlob("blob_column"); byte[] data = blob.getBytes(1, (int) blob.length()); ``` 2. byte[] 转 Blob ```java byte[] data = ...; Blob blob = connection.createBlob(); blob.setBytes(1, data); ``` 下面是 Blob 和 InputStream 之间的相互转换: 1. Blob 转 InputStream ```java Blob blob = resultSet.getBlob("blob_column"); InputStream inputStream = blob.getBinaryStream(); ``` 2. InputStream 转 Blob ```java InputStream inputStream = ...; Blob blob = connection.createBlob(); OutputStream outputStream = blob.setBinaryStream(1); byte[] buffer = new byte[4096]; int bytesRead = -1; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } ``` 下面是 BlobClob 之间的相互转换: 1. BlobClob ```java Blob blob = resultSet.getBlob("blob_column"); Clob clob = connection.createClob(); Writer writer = clob.setCharacterStream(1); InputStream inputStream = blob.getBinaryStream(); byte[] buffer = new byte[4096]; int bytesRead = -1; while ((bytesRead = inputStream.read(buffer)) != -1) { writer.write(new String(buffer, 0, bytesRead, "UTF-8")); } ``` 2. ClobBlob ```java Clob clob = resultSet.getClob("clob_column"); Blob blob = connection.createBlob(); OutputStream outputStream = blob.setBinaryStream(1); Reader reader = clob.getCharacterStream(); char[] buffer = new char[4096]; int charsRead = -1; while ((charsRead = reader.read(buffer)) != -1) { outputStream.write(new String(buffer, 0, charsRead).getBytes("UTF-8")); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值