在java中从MySQL读取MEDIUMBLOB

在java中从MySQL读取MEDIUMBLOB,java,mysql,blob,Java,Mysql,Blob,这是我第一次使用Blob数据类型。 我将图像文件存储在MySQL数据库中的MEDIUMBLOB数据类型中。现在,我想使用JAVA应用程序检索它。 到目前为止,我找到了使用com.mysql.jdbc.Blob的教程。 我试过了 Blob imgAsBlob = resultset.getBlob("image"); byte[] imgAsBytes = imgAsBlob.getBytes(1, (int) imgAsBlob.length()); 但是我在imgAsBlob.getByte

这是我第一次使用Blob数据类型。 我将图像文件存储在MySQL数据库中的MEDIUMBLOB数据类型中。现在,我想使用JAVA应用程序检索它。 到目前为止,我找到了使用
com.mysql.jdbc.Blob
的教程。 我试过了

Blob imgAsBlob = resultset.getBlob("image");
byte[] imgAsBytes = imgAsBlob.getBytes(1, (int) imgAsBlob.length());
但是我在
imgAsBlob.getBytes(1,(int)imgAsBlob.length())
处得到一个错误,因为第二个参数比BLOB的长度大(46352):

java.sql.SQLException: "pos" + "length" arguments cannot be larger than the BLOB's length.
除了getBlob()方法或
com.mysql.jdbc.Blob
之外,还有其他方法可以使用吗


谢谢。

为什么要将值
1
作为第一个参数传递?这就切断了第一个字节。使用
imgAsBlob.getBytes(1,(int)imgAsBlob.length())
@f1sh我没明白你的意思。代码与您建议使用的代码相同。此外,位置“pos”不能小于1。您是正确的,
1
应该是
0
。我不知道您不能将0作为参数传递。
imgAsBlob.length()的值是多少?
imgAsBlob.length()是46352
,不应该发生这种情况。显示
pos
减少1,检查不应失败。我不知道这是怎么回事。可以调试到
getBytes
方法中吗?为什么要将值
1
作为第一个参数传递?这就切断了第一个字节。使用
imgAsBlob.getBytes(1,(int)imgAsBlob.length())
@f1sh我没明白你的意思。代码与您建议使用的代码相同。此外,位置“pos”不能小于1。您是正确的,
1
应该是
0
。我不知道您不能将0作为参数传递。
imgAsBlob.length()的值是多少?
imgAsBlob.length()是46352
,不应该发生这种情况。显示
pos
减少1,检查不应失败。我不知道这是怎么回事。你能调试成
getBytes
方法吗?