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

原创 2015年07月08日 16:41:53

下边是一个将图片以二进制文件形式存到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();

			}

	}

}

效果截图:



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

visual c++将图片以二进制流的形式存入到mysql中

想想写这个,并不是想说明什么,只是之前用过了这个,可能目前做的程序不会再使用,因此记录下来:  其实向mysql中存储大数据的过程是不难的,这里先说明过程,在过程叙述中会说明遇到的问题:    i...

用(java或plsql的存储过程)将文件以二进制的形式写入到oracle数据库(适用dwg格式文件)

java  将文件以二进制的形式导入到oracle数据库的blob或long raw格式的字段中。   package com.dsit.zsdw.test; import java.io.Fi...
  • angugu
  • angugu
  • 2012-06-13 17:19
  • 1984

用Java或Jsp向数据库存取二进制图片

前几天突然看到学校音乐站上的图片原来是存储在数据库上的,是二进制而不是使用路径保存的,在网上招了找发现大多介绍的都是hph方式,在这里做个总结,首先要存储二进制文件在数据库中要搞清楚下面几个内容: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)