将Blob转换为字节数组的最简单方法

55

如何最简单地将Blob转换为字节数组?我正在使用MYSQL,并且想将Blob数据类型转换为字节数组。

我正在使用Java编程语言:)

3个回答

89

mySql blob类有以下函数:

blob.getBytes

使用方法如下:

//(assuming you have a ResultSet named RS)
Blob blob = rs.getBlob("SomeDatabaseField");

int blobLength = (int) blob.length();  
byte[] blobAsBytes = blob.getBytes(1, blobLength);

//release the blob and free up memory. (since JDBC 4.0)
blob.free();

谢谢,实际上Blob没有getBytes()方法,只有SerialBlob有getBytes()方法。那么针对Blob应该怎么做呢? - androidGuy
2
你正在使用 java.sql.Blob 吗? - Timothy Groote
这个方法会抛出“Lob is closed”异常...我该怎么办? - Anu Shibin Joseph Raj
@AnuShibinJosephRaj 我认为你应该在 Stack Overflow 上发布一个完整的问题,并附上你的代码示例。 - Timothy Groote
将二进制blob转换并通过httpclient post请求发送,这是一个好的方式吗? - Khan
@Khan 这完全取决于你的情况。但我可以预先告诉你的是,它不会很快。 - Timothy Groote

60

最简单的方法是这样的。

byte[] bytes = resultSet.getBytes("my_field");

不好意思,但我真的不明白 rs 是什么。 - Marco Sulla
@MarcoSulla:一个 JDBC 的 ResultSet - Lukas Eder
我相信这个答案只在字段少于1048576字节时有效。 - AJ.P
1
@AJ.P:这取决于SQL方言。在许多方言中,没有这样的限制。 - Lukas Eder

0

您也可以通过以下方式从 Blob 实例获取字节数组:

Blob myBlob = null;
byte[] bytes = myBlob.getBinaryStream().readAllBytes();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接