如何在 Java 中操作 BLOB?
我有一个返回 BLOB 的数据库过程。谁能告诉我如何操作 BLOB?有没有具体的API可以实现这个功能?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我有一个返回 BLOB 的数据库过程。谁能告诉我如何操作 BLOB?有没有具体的API可以实现这个功能?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
当然,是 JDBC API。
您掌握了
Blob
实例就像您从结果集中获取任何值一样。然后,您应该在此Blob
上使用get...
- 和set...
方法。在这里,您基本上有两个选择:
使用字节数组:
Blob.getBytes
Blob.setBytes
。使用
InputStream
/OutputStream
:Blob.getBinaryStream
Blob.setBinaryStream
。另一种方法是首先跳过与
Blob
的混乱,而是直接通过ResultSet
接口使用第二种方法(使用流) 。Sure, the JDBC API.
You get hold of the
Blob
instance just as you get hold of any value from a result set. You should then use theget...
- andset...
methods on thisBlob
.Here you basically have two options:
Work with a byte-array:
byte[]
containing the data throughBlob.getBytes
Blob.setBytes
.Work with
InputStream
/OutputStream
:InputStream
throughBlob.getBinaryStream
Blob.setBinaryStream
.An alternative approach is to skip messing with
Blob
in the first place, and instead use the second approach (with streams) directly through theResultSet
-interface.这取决于包含哪种类型的 blob(图像、视频)及其扩展名。我编写了一个简单的程序来从数据库检索图像并将其显示在 JSP 页面中。希望有帮助。
JSP页面
Servlet页面
调用过程
It depends on which kind of blob contains (image, video) and it's extension. I wrote a simple program to retrieve an image from DB and show it in JSP page. Hope it helps.
JSP Page
Servlet Page
Calling Procedure
使用简单的 Java JDBC Api,您可以获得
java.sql.Blob
从结果集
。ResultSet.getBlob(index)
或ResultSet.getBlob(String columnName)
。两者都返回一个
Blob
。获得
Blob
后,您可以从Blob.getBytes()
方法或使用setBytes()
方法。更新:看到某些数据库驱动程序供应商不支持
Blob
,您可以使用ResultSet.getBinaryStream()
。With Simple Java JDBC Api, you can get a
java.sql.Blob
back from aResultSet
.ResultSet.getBlob(index)
orResultSet.getBlob(String columnName)
.Both returns a
Blob
.Once you get a
Blob
, you can get thebyte[]
back from theBlob.getBytes()
method or set usingsetBytes()
method.Update: Seeing that some Database driver vendors don't support
Blob
, you can useResultSet.getBinaryStream()
.您可以使用 javax.sql.rowset .serial.SerialBlob。
我在我的 SpringBoot & 中使用它Angular4 应用程序如下所示:
SerialBlob serialBlob = new SerialBlob(byte[])
You can use javax.sql.rowset.serial.SerialBlob.
I'm using it in my SpringBoot & Angular4 application like this:
SerialBlob serialBlob = new SerialBlob(byte[])
例子
Example