大对象的存储需要对数据转换成2进制数据,通过流的输入输出操作对Blob数据进行存储和读取操作
步骤:
存储操作:
- 创建一个字节输入流,先将Blob对象读取到字节数组中byte[] b;
- 创建一个Blob 实例Blob pic=conn.createBlob();
- 创建一个字节输出流接收Blob对象的返回的输出流OutputStream os=pic.setBinaryStream(1);
- 将文件写到Blob中 os.write(b);//将b中的字节写到pic中
- 给预编译的Prepare的Statement调用setBlob()方法设置Blob类型数据
- 执行sql语句
读取操作:
-
- 执行getBlob()方法获得数据库中存储的Blob类型的数据
- //建立输入流,从数据库输入到程序中
InputStream is=b.getBinaryStream();
- byte[] bs=new byte[is.available()];//创建一个字节数字存储Blob对象的数据
is.read(bs);//将Blob读取到数组中
- 建立文件输出流,将字节数组中的数据写到硬盘中
FileOutputStream fos=new FileOutputStream("G:/"+"aaa.jpg");
//将Blob对象写到文件中