Java结果集getblob和getobject的区别

时间:2015-06-29 15:21:48

标签: java mysql resultset

我在编写/读取BufferedImage java数据类型时遇到问题。写入时似乎对插入的数据没有问题,但在阅读时,使用" getObject"来自java ResultSet的方法(由于某些特殊原因,该方法必须是getObject,因此我可以读取任何类型的数据,然后将其转换)。当我将BufferedImage dataType插入mysql时,我正在使用inputStream,它在字节数组的长度上有42559,但是我正在使用getObject读取它,长度不再是42559它的大小转为42586,所以我无法用" ImageIO.read" method(返回null)

这是我的插入代码:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write((BufferedImage) vals[i], "jpg", baos);
InputStream is = new ByteArrayInputStream(baos.toByteArray());
ps.setBinaryStream(i + 1, is);

这是我的阅读代码:

Object set = rs.getObject(i + 1);

这是我转换为BufferedImage代码:

ByteArrayOutputStream b = new ByteArrayOutputStream();
ObjectOutputStream o = new ObjectOutputStream(b);
o.writeObject(set);
o.flush();
byte res[] = b.toByteArray();
o.close();
b.close();

System.out.println("Cek variabel: " + set.getClass() + "-" + res.toString() + "-" + res.length);
Blob blob = KubraLib.Conn.ConnSelect.getMySQLConn().createBlob();
blob.setBytes(1, res);
System.out.println("Cek variabel: " + blob.toString());

InputStream is = blob.getBinaryStream();
System.out.println("Cek variabel: " + is.toString());

bi = ImageIO.read(is);
System.out.println("Cek hasil: " + bi.toString()); <-- Returns java.lang.NullPointerException

is.close();

任何帮助将不胜感激:)。而且我对Stack Overflow相对较新,如果这篇文章中有任何错误,我道歉:))

0 个答案:

没有答案