将图片放入数据库中已经从数据库中把图片读出来
2012-04-22 15:13
239 查看
先讨论一下图片放入数据库中。Oracle数据库中的大对象类型有两种:
a.Blob二进制的大对象类型,主要是指音频,视频,图像,word等文档,被认为是二进制的文件。
b.Clob字符型的大对象类型,主要是指文本文件。
图片是数据库中的Blob大对象类型。如下代码是将一张图片放入数据库中。
这行代码中的1代表的是第一个问号,显而易见,第一个问号值得是SQL语句中的name属性,所以feng字符串知道就是将要插入数据库中这条记录的名字。由于第二的对象是大对象类型的。所以无法直接调用方法,需要将图片以流的方式读取,以二进制的形式放在数据库中。这样就实现了将图片放入数据中。
不要忘记关闭打开的资源。
接下来讨论把图片从数据库中读出来。
上面这行代码,其作用是在第一个问号的位置放入值1。也就是对SQL语句的id赋值,使id=1;接下来对id=1这条记录进行读取图片。
这条语句是指从数据库中读取第三个属性所对应该的那个对象。由于在建立表的时候,三个属性是photo ,blob类型的。所以对这对象的读去用流方式来读取。指定读出来的图片的名字和放置的位置。最后关闭资源。
a.Blob二进制的大对象类型,主要是指音频,视频,图像,word等文档,被认为是二进制的文件。
b.Clob字符型的大对象类型,主要是指文本文件。
图片是数据库中的Blob大对象类型。如下代码是将一张图片放入数据库中。
import java.io.File; import java.io.FileInputStream; import java.sql.Connection; import java.sql.PreparedStatement; public class SavePic { public static void main(String[] args){ Connection conn = null; PreparedStatement stmt = null; String sql = "insert into pic_feng " + "(id, name, photo) values" + "(pic_feng_seq.nextval,?,?)"; try{ conn = ConnectionUtils.openConnection(); stmt = conn.prepareStatement(sql); stmt.setString(1,"feng"); File f = new File("src\\ayan.JPG"); FileInputStream fis = new FileInputStream(f); stmt.setBinaryStream(2,fis,(int)f.length()); int n = stmt.executeUpdate(); System.out.println(n+"条记录被更新"); }catch(Exception e){ e.printStackTrace(); }finally{ ConnectionUtils.closeConnection(conn); ConnectionUtils.closeStatement(stmt); } } }建立数据库连接,利用PrepareStatement类型的对象,去调用prepareStatements()方法,执行sql语句。用这个方法主要原因是因为所执行的SQL语句中有问号存在。调用相应的set方法,将相应的值插入到数据库中。
stmt.setString(1,"feng");
这行代码中的1代表的是第一个问号,显而易见,第一个问号值得是SQL语句中的name属性,所以feng字符串知道就是将要插入数据库中这条记录的名字。由于第二的对象是大对象类型的。所以无法直接调用方法,需要将图片以流的方式读取,以二进制的形式放在数据库中。这样就实现了将图片放入数据中。
不要忘记关闭打开的资源。
接下来讨论把图片从数据库中读出来。
import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; public class GetPic { public static void main(String[] args){ Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; String sql = "select * from stu_feng where id = ?"; try{ conn = ConnectionUtils.openConnection(); stmt = conn.prepareStatement(sql); stmt.setInt(1, 1); rs = stmt.executeQuery(); if(rs.next()){ FileOutputStream fos = new FileOutputStream(new File("stu.bmp")); InputStream is = rs.getBinaryStream(3); byte[] buffer = new byte[4*1024]; int length = 0; while((length = is.read(buffer))!=-1){ fos.write(buffer, 0, length); } fos.flush(); fos.close(); is.close(); } }catch(Exception e){ e.printStackTrace(); }finally{ ConnectionUtils.closeConnection(conn); ConnectionUtils.closeResultSet(rs); ConnectionUtils.closeStatement(stmt); } } }上面的程序首先建立数据库连接,让回给id=?的id赋值,接着执行sql语句。
stmt.setInt(1, 1)
上面这行代码,其作用是在第一个问号的位置放入值1。也就是对SQL语句的id赋值,使id=1;接下来对id=1这条记录进行读取图片。
InputStream is = rs.getBinaryStream(3);
这条语句是指从数据库中读取第三个属性所对应该的那个对象。由于在建立表的时候,三个属性是photo ,blob类型的。所以对这对象的读去用流方式来读取。指定读出来的图片的名字和放置的位置。最后关闭资源。
相关文章推荐
- c# 如何将图片信息从数据库中读取出来放入pictureBox1中:
- WPF中把图片保存到数据库,并且从数据库提取出来显示
- [原] XAF 如何将数据库中Byte array图片显示出来
- 把图片保存到数据库,并读出来.
- SSIS: 把存储在数据库中的图片导出来
- 把图片在数据库中读出来并显示在页面上
- Winform下如何上传图片并显示出来。同时保存到数据库
- 利用数据库如何存入BLOB格式图片,并从数据库中取出BLBO格式图片显示出来
- php批量上传图片并把图片名放入数据库
- 图片怎么保存到数据库, 以及怎么把图片从数据库中取出来使用?
- 在数据库中处理image字段【把图片存储到数据库并显示出来】
- 将数据库 二进制流 图片数据 显示出来
- 在HTML中使用动态变量获取数据库路径的图片,并显示出来。
- 将图片写入数据库并显示出来
- 在html页面用ajax的简单应用通过javascript得到数据库中的图片路径并在表格中显示出来
- Win form 在pictureBox控件中实现选择图片然后以二进制方式保存到数据库。以及在pictureBox控件显示出来
- 我用servlet读取数据库图片文件已经成功
- php将数据库中的电话号码读取出来并生成图片
- 将图片从数据库表中拉出来显示在前端
- 将图片插入数据库并使用asp.net读取出来的正确方法