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

Java JDBC读取二进制类型数据(BLOB)

2012-12-28 22:58 591 查看
Java JDBC读取二进制类型数据(BLOB)
开发中我们常常会将一个图片存入数据库或者将一个文件存入数据库,那么就需要用到BLOB类型。今天和大家分享怎么把二进制文件用Java JDBC存入数据库。

一、建立数据库表
参照具体业务

二、写入数据库程序实现
1、编写JDBC工具类
package com.haerbin.JDBCProject.Connection;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public final class JdbcUtil_Oracle
{
private static String url = "jdbc:oracle:thin:@localhost:1521:orcl";
private static String user = "scott";
private static String password = "tigger";

private JdbcUtil_Oracle()
{
}

static
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch (ClassNotFoundException e)
{
throw new ExceptionInInitializerError(e);
}
}

public static Connection getConnection() throws SQLException
{
return DriverManager.getConnection(url, user, password);
}

public static void free(ResultSet rs, Statement st, Connection conn)
{
try
{
if (rs != null)
rs.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
try
{
if (st != null)
st.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
if (conn != null)
try
{
conn.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
}
}


2、编写业务接口(DAO)
package com.haerbin.JDBCProject.Dao;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

public interface BlobDao
{
public void addBlob(InputStream in, File file) throws IOException;
}


3、编写业务接口实现类(DAOIMPL)
package com.haerbin.JDBCProject.DaoImpl;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.haerbin.JDBCProject.Connection.JdbcUtil_Oracle;
import com.haerbin.JDBCProject.Dao.BlobDao;

public class BlobDaoImpl implements BlobDao
{

/**
* 数据库插入blob类型数据
*
* @throws IOException
*/
public void addBlob(InputStream in, File file) throws IOException
{
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

try
{
conn = JdbcUtil_Oracle.getConnection();
String sql = "insert into blobtable(id, blob_bit) values(my_sequences.nextval, ?)";
ps = conn.prepareStatement(sql);

ps.setBinaryStream(1, in, (int) file.length());

ps.executeUpdate();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
JdbcUtil_Oracle.free(rs, ps, conn);
in.close();
}
}

}


4、调用接口实现写入BLOB
package com.haerbin.JDBCProject.Beans;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import com.haerbin.JDBCProject.Dao.BlobDao;
import com.haerbin.JDBCProject.DaoImpl.BlobDaoImpl;

public class BlobTest
{

/**
* blob数据库存入
* @throws IOException
*/
public static void main(String[] args) throws IOException
{
/*向数据库中添加blob类型数据*/
BlobDao bd = new BlobDaoImpl();

File file = new File("D:/myimage.PNG");

InputStream in = new BufferedInputStream(new FileInputStream(file));

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