欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-07 11:51:33
本文实例讲述了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程序设计有所帮助。