首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于从BLOB列中获取数据的getBytes、getBinaryStream和getBlob

用于从BLOB列中获取数据的getBytes、getBinaryStream和getBlob
EN

Stack Overflow用户
提问于 2009-04-17 15:05:42
回答 2查看 14.6K关注 0票数 20

有3种不同的方法可以从ResultSet中获取BLOB列的数据

  • getBytes
  • getBinaryStream
  • getBlob

此外,getBlob返回的Blob对象上还提供了getBytesgetBinaryStream方法。

是否有什么特殊的原因(性能、内存、数据库特定问题)让我选择其中之一?

Blob对象还有一个从JDBC4.0开始引入的free()调用。这有什么不同吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-04-17 15:18:46

如果你要提取大量数据(即足够的数据导致内存问题),那么getBinaryStream将为你提供最大的灵活性来处理和丢弃你读入的数据。

另一方面,这可能会相当慢,这取决于您的JDBC驱动程序,因为每次从流中读取都可能需要与数据库进行大量的网络对话。如果调用getBytes,那么驱动程序就知道一次获取整个批次,这可能会更有效率。

getBlob()返回一个指向数据的“指针”,您可以使用Blob接口上的方法对其进行操作。如果您需要修改或以其他方式使用现场数据,那么这可能是最适合您的。

票数 18
EN

Stack Overflow用户

发布于 2009-04-17 15:11:53

通常,您希望选择基于流的方法(即getBlob()、.getBinaryStream()或getBinaryStream()),而不是字节数组方法。

  1. 性能。驱动程序有机会以增量方式从database.
  2. Memory.中提取字节您不必一次加载所有字节,并在一个连续的块中加载。

最糟糕的情况是,数据库(或JDBC驱动程序)并不真正支持流二进制数据,但是使用流方法仍然没有明显的损失。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/760781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档