以下代码:
InputStream imageData=image.getInputStream();
byte[] bytes = ByteStreams.toByteArray(imageData);
pst.setBinaryStream(3, imageData, (int)bytes.length);
给出以下错误:
com.ibm.db2.jcc.am.SqlException:[jcc] [t4] [2039] [11162] [3.57.82]在读取InputStream参数#3时过早地达到了流的结束。剩余数据填充为0x0。 ERRORCODE = -4225,SQLSTATE = null`
我用来创建表的DDL如下:
CREATE TABLE ARCH_TRANCHE.UPLOAD_DETAIL (
SEQ_ID VARCHAR(200) NOT NULL,
FILE_NAME VARCHAR(140) NOT NULL,
IMAGE_FILE BLOB(1048576),
CREATED_DATE TIMESTAMP,
LAST_MODIFIED_DATE TIMESTAMP,
FILE_SIZE VARCHAR(20),
PRIMARY KEY (SEQ_ID,FILE_NAME)
);
答案 0 :(得分:1)
我怀疑问题是您已经读取数据,以便获取bytes
...所以当驱动程序尝试读取{{ 1}},它立即发现没有更多的数据可供阅读。
我建议你只设置一个没有长度的流:
imageData
如果您不能这样做(根据评论),您可以将所有数据提取到您正在进行的字节数组中,然后将其包装在pst.setBinaryStream(3, image.getInputStream());
中:
ByteArrayInputStream