您的位置:首页 > 编程语言 > Java开发

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

2015-07-08 16:41 585 查看
下边是一个将图片以二进制文件形式存到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();

}

}

}


效果截图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: