关闭

JAVA将图片以二进制形式存入Access数据库

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

下边是一个将图片以二进制文件形式存到Access数据库的名为Insert_Photo_Record的类:

由于这个类值负责完成插入图片,所以没有为它书写方法,它的所有工作在构造函数中完成。下边是代码,会在需要注释的地方添加注释


import java.sql.*;
import java.io.*;
import java.util.Arrays;
public class Insert_Photo_Record{
	String driver="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=";//这只是连接字符串的一部分,等号后边应该是数据库地址,因为涉及出来的 类希望可以用于向任何access数据库插入图片,所以数据库地址可变
	String dataBaseLocation=null;//数据库地址,例子:"d://a1.mdb"

	String pictureLocation=null;//所要插入的图片的地址

	String url=null;//连接字符串,例子:"jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=d://a1.mdb"
	String user=null;
	String password=null;
	String tableName=null;//向数据库中的特定表插入

	Connection con=null;
	PreparedStatement ps=null;
	InputStream in=null;


	//构造函数
	public Insert_Photo_Record(String tableName,String dataBaseLocation,String user,String password,String pictureLocation) throws Exception {
		
			this.tableName=tableName;
			this.dataBaseLocation=dataBaseLocation;
			this.user=user;
			this.password=password;
			this.pictureLocation=pictureLocation;
			
			File tempFile=new File(pictureLocation.trim());//通过文件地址获取文件名
			String fileName=tempFile.getName();

			url=driver+dataBaseLocation;//连接为完成的连接字符串
		
			in=new FileInputStream(this.pictureLocation);
			System.out.println("文件输入流开启");
		        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			con=DriverManager.getConnection(url,user,password);//建立连接
			System.out.println("数据库连接成功");
			String string="insert into "+tableName+" values(?,?);";//只能插入两个字段
			ps=con.prepareStatement(string);//准备发送的SQL语句
			ps.setString(1,fileName.substring(0,19));//第一个字段为字符串类型,插入值为图片名(之前的图片名为2015-07-08-17-11-56.jpg格式)
			ps.setBinaryStream(2,in,in.available());//第二个字段为二进制
			ps.executeUpdate();//执行更新
			System.out.println("信息已插入数据库");
			in.close();
			System.out.println("文件输入流关闭");
			ps.close();
			con.close();
			System.out.println("数据库连接关闭");	
	}

}

下边是一个测试类:

public class Test{

	public static void main(String[] args){

		try {

			Insert_Photo_Record insert=new Insert_Photo_Record("record","C://Users//fujiaxiaoshao//Desktop//record.mdb","username", "password","C://Users//fujiaxiaoshao//Desktop//2015-07-08-17-11-56.jpg");

			}
			catch (Exception f){

			f.printStackTrace();

			}

	}

}

效果截图:



0
0

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