回答

收藏

getBytes vs getBinaryStream vs getBlob用于从BLOB列中获取数据

技术问答 技术问答 287 人阅读 | 0 人回复 | 2023-09-14

有3种不同的方法可以从BLOB列中获取数据ResultSet9 E6 P9 B$ i( c' \5 \5 t
getBytes
: ]6 w# F& i  u  H+ }& C+ \getBinaryStream7 l+ d. {3 X5 [7 ?
getBlob
  ?- x- n, c! Z1 j- s

: M! f0 D' G' m* v3 y4 G$ Y此外,由Blob返回的对象getBlob还具有getBytes和getBinaryStream可用的方法。
* e8 {  N' [( t2 |7 t( P! t是否有任何我应该选择的特殊原因(性能,内存,数据库特定的问题)?
  Z0 n. q" W5 Q. G. ~该Blob对象还具有free()从JDBC 4.0开始引入的调用。这有什么区别吗?6 ~9 s6 n8 A7 I, W- g0 K4 m0 R: k
                7 y2 E* d' i# t/ @
解决方案:2 H$ [1 [' C5 r# B: `
               
6 z4 ~6 v- L8 ?; n2 n- P' u7 X; F% N' y& H- @! E3 h8 o: E( M
5 l  |& B0 I; U' Y
                如果您要提取大量数据(即,足够多的数据会导致内存问题),那么getBinaryStream将为您提供最大的灵活性,使您可以在读取数据时处理和丢弃数据。
4 S; K9 L+ N3 \! u; W; u3 x  o  v另一方面,这可能会非常慢,具体取决于您的JDBC驱动程序,因为从流中进行的每次读取都可能导致数据库与网络进行大量的网络聊天。如果调用getBytes,则驱动程序会知道一次性获取全部内容,这可能会更有效率。
' F" \/ Z. r8 D2 ]8 ugetBlob()向数据返回一个“指针”,您可以使用Blob接口上的方法对其进行操作。如果您需要修改数据或以其他方式欣赏原位数据,那么这可能是最适合您的。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则