除数字、字符串、日期,还会存储大对象(图片,其他数据…)。在SQL中,二进制大对象称为BLOB,字符型大对象称为CLOB。
读取LOB,需要执行select语句,然后再ResultSet上调用getBlob或getClob方法,或者BLOB或CLOB对象。
要从Blob中获取二进制,可以调用getByte或getInutStream。
如果获取了Clob对象,那么久可以通过调用getSubString或getCharacterStream方法来获取其中的字符数据。
如果要将LOB置于数据库中,需要在Connection对象上调用createBlob或createClob,然后获取一个用于该LOB的输出流或写入流,写出数据,并将该对象存储到数据库中。
代码示例:
//从表中获取一张图像
PreparedStatement stat = conn.prepareStatement(“select Cover from boookcovers where ISBN = ?”);
Stat.set(1, isbn);
ResultSet result = stat.executeQuery();
If (result.next()) {
Blob coverBlob = result.getBlob(1);
Image coverImage = ImageIO.read(coverBlob, getBinaryStream());
}
//存储一张图片
Blob coverBlob = connection.createBlob();
Int offset = 0;
OutputStream out = coverBlob.setBinaryStream(offset); //读取文件
imageIO.write(coverImage, “PGN”, out);
PreparedStatement stat = conn.prepareStatement(“insert into Cover valus(?, ?)”);
Stat.set(1, isbn);
Stat.set(2, coverBlob);
Stat.executeUpdate();