关闭

JAVA将以二进制形式存储在Access数据库中的图片提取出来

797人阅读 评论(0) 收藏 举报

直接上代码,过多的不解释,看下一篇博文就知道了

import java.io.*;

import java.sql.*;



public class Get_Photo_Record{

	String driver="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=";

	String dataBaseLocation=null;//例子:"d://a1.mdb"



	String url=null;//连接字符串,例子:"jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=d://a1.mdb"

	String user=null;

	String password=null;

	String tableName=null;



	ResultSet rs=null;//查询SQL语句后的返回结果

	Connection con=null;

	Statement st=null;



	InputStream in=null;

	OutputStream out = null;



	//构造函数必须抛出异常

	public Get_Photo_Record(String tableName,String dataBaseLocation,String user,String password) throws Exception {

		

			this.tableName=tableName;

			this.dataBaseLocation=dataBaseLocation;

			this.user=user;

			this.password=password;



			url=driver+dataBaseLocation;//构建连接字符串

		  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动

			con=DriverManager.getConnection(url,user,password);//建立连接

			System.out.println("数据库连接成功");

			String string="select picture from "+tableName;//构造SQL语句

			st=con.createStatement();

			rs=st.executeQuery(string);//执行SQL语句

			rs.next();//光标指向第一行,最开始指向的是第0行,这段代码值用来查询第一行的记录,查询其他记录可以使得rs.next()循环或者SQL语句中指定行数

			in=rs.getBinaryStream("picture");//从rs在读取picture放入InputStream

			byte[] b=new byte[61858764];

			in.read(b);//从InputStream对象中读取数据放进byte数组中

			//rs.getString(1)得到查询的第一个字段的值

			out=new FileOutputStream("C://Users//fujiaxiaoshao//Desktop//"+rs.getString(1)+".jpg");

			out.write(b);//将文件输出,内容则为byte数组里边的数据

			out.flush();

			System.out.println("照片绘制成功");



			in.close();

			out.close();

			System.out.println("文件输入输出流关闭");

			

			rs.close();

			st.close();

			con.close();

			System.out.println("数据库连接关闭");	

	}



}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21041次
    • 积分:731
    • 等级:
    • 排名:千里之外
    • 原创:52篇
    • 转载:8篇
    • 译文:0篇
    • 评论:1条
    最新评论