JDBC编程实现文件、图片的存储方法

内容摘要
本文实例讲述了JDBC编程实现文件、图片的存储方法。分享给大家供大家参考,具体如下:


/*
实现的功能:
用数据库存储文本数据,并且读取出来放在当前项目里
分析:
难度不是很大,
文章正文

本文实例讲述了JDBC编程实现文件、图片的存储方法。分享给大家供大家参考,具体如下:

/*
实现的功能:
 用数据库存储文本数据,并且读取出来放在当前项目里
分析:
 难度不是很大,关键是掌握文件流,数据库的操作不是很多,但是文件流的读写比较多
日期:20131003
作者:烟大阳仔
*/
public class Ckb_test {
 public static void main(String[] args) throws SQLException, IOException {
  // TODO Auto-generated method stub
  read();
 }
 static void create() throws SQLException, IOException
 {
  Connection conn=null;
  PreparedStatement prest=null;
  ResultSet resultset=null;
  try {
   //2.建立连接
   conn=JdbcUtils.getConnection();
   //单例设计模式
   conn=JdbcUtilsSingle.getInstance().getConnection();
   //3.创建语句
   String sql="insert into ckb_test(text) values(?)";
   prest=conn.prepareStatement(sql);
   File file=new File("src/cn/com/JDBC/JdbcUtils.java");
   Reader reader=new BufferedReader(new FileReader(file));
   prest.setCharacterStream(1, reader, (int)file.length());
   //4.执行语句
   int i=prest.executeUpdate();
   reader.close();
   System.out.println("i="+i);
  } finally
  {
   JdbcUtils.free(resultset, prest, conn);
  }
 }
 static void read() throws SQLException, IOException
 {
  Connection conn=null;
  Statement st=null;
  ResultSet resultset=null;
  try {
   //2.建立连接
   conn=JdbcUtils.getConnection();
   //单例设计模式
   conn=JdbcUtilsSingle.getInstance().getConnection();
   //3.创建语句
   st=conn.createStatement();
   //4.执行语句
   resultset=st.executeQuery("select text from ckb_test");
   //5.处理结果
   while(resultset.next())
   {
    Clob clob=resultset.getClob(1);
    Reader reader=clob.getCharacterStream();
    //reader=resultset.getCharacterStream(1);
    File file=new File("JdbcUtils.java");
    Writer writer=new BufferedWriter(new FileWriter(file));
    char[] buff=new char[1024];
    for(int i=0;(i=reader.read(buff))>0;)
    {
     writer.write(buff,0,i);
    }
    writer.close();
    reader.close();
   }
  } finally
  {
   JdbcUtils.free(resultset, st, conn);
  }
 }
}
/*
实现的功能:
 用数据库存储图片数据,并且读取出来放在当前项目里
分析:
 难度不是很大,关键是掌握字节流,数据库的操作不是很多,但是文件流的读写比较多,注意更改图片的目录
日期:20131003
作者:烟大阳仔
*/
public class PictureBlob {
 public static void main(String[] args) throws SQLException, IOException {
  read();
 }
 static void create() throws SQLException, IOException
 {
  Connection conn=null;
  PreparedStatement prest=null;
  ResultSet resultset=null;
  try {
   //2.建立连接
   conn=JdbcUtils.getConnection();
   //单例设计模式
   conn=JdbcUtilsSingle.getInstance().getConnection();
   //3.创建语句
   String sql="insert into blob_test(big_bit) values(?)";
   prest=conn.prepareStatement(sql);
   File file=new File("C:\\Documents and Settings\\Administrator\\My Documents\\My Pictures\\cxg.jpg");
   InputStream in=new BufferedInputStream(new FileInputStream(file));
   prest.setBinaryStream(1, in, (int)file.length());
   //4.执行语句
   int i=prest.executeUpdate();
   in.close();
   System.out.println("i="+i);
  } finally
  {
   JdbcUtils.free(resultset, prest, conn);
  }
 }
 static void read() throws SQLException, IOException
 {
  Connection conn=null;
  Statement st=null;
  ResultSet resultset=null;
  try {
   //2.建立连接
   conn=JdbcUtils.getConnection();
   //单例设计模式
   conn=JdbcUtilsSingle.getInstance().getConnection();
   //3.创建语句
   st=conn.createStatement();
   //4.执行语句
   resultset=st.executeQuery("select big_bit from blob_test");
   //5.处理结果
   while(resultset.next())
   {
    Blob blob=resultset.getBlob(1);
    InputStream in=blob.getBinaryStream();
    //reader=resultset.getCharacterStream(1);
    File file=new File("1.jpeg");
    OutputStream out=new BufferedOutputStream(new FileOutputStream(file));
    byte[] buff=new byte[1024];
    for(int i=0;(i=in.read(buff))>0;)
    {
     out.write(buff,0,i);
    }
    out.close();
    in.close();
   }
  } finally
  {
   JdbcUtils.free(resultset, st, conn);
  }
 }
}

希望本文所述对大家Java程序设计有所帮助。


代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!