有3种不同的方法可以从ResultSet
中获取BLOB
列的数据
getBytes
getBinaryStream
getBlob
此外,getBlob
返回的Blob
对象上还提供了getBytes
和getBinaryStream
方法。
是否有什么特殊的原因(性能、内存、数据库特定问题)让我选择其中之一?
Blob
对象还有一个从JDBC4.0开始引入的free()
调用。这有什么不同吗?
发布于 2009-04-17 15:18:46
如果你要提取大量数据(即足够的数据导致内存问题),那么getBinaryStream将为你提供最大的灵活性来处理和丢弃你读入的数据。
另一方面,这可能会相当慢,这取决于您的JDBC驱动程序,因为每次从流中读取都可能需要与数据库进行大量的网络对话。如果调用getBytes,那么驱动程序就知道一次获取整个批次,这可能会更有效率。
getBlob()返回一个指向数据的“指针”,您可以使用Blob接口上的方法对其进行操作。如果您需要修改或以其他方式使用现场数据,那么这可能是最适合您的。
发布于 2009-04-17 15:11:53
通常,您希望选择基于流的方法(即getBlob()、.getBinaryStream()或getBinaryStream()),而不是字节数组方法。
最糟糕的情况是,数据库(或JDBC驱动程序)并不真正支持流二进制数据,但是使用流方法仍然没有明显的损失。
https://stackoverflow.com/questions/760781
复制相似问题