您的位置:首页 > 大数据

JDBC存取二进制文件示例

2014-11-12 13:59 281 查看
本程序实现了将图片文件转化成二进制的形式,通过JDBC进行数据库存储的功能。

程序分为三个文件,ConnUtil.java为数据库连接,PutFile.java为向数据库中存入二进制图片数据,GetFile.java为从数据库中取出二进制数据并保存成本地图片文件。代码如下:

数据库连接:

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

public class ConnUtil {
public static Connection getConn() {
Connection conn = null;
try {
Class.forName("org.postgresql.Driver"); // 驱动
String url = "jdbc:postgresql://192.168.8.103:2345/swfit"; // 连接数据库的url
try {
conn = DriverManager.getConnection(url, "super", "111111"); // super 为数据库用户名,111111为密码
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
}
}


向数据库中存入二进制图片数据:

import java.io.FileInputStream;
import java.sql.*;
import java.io.File;

public class PutFile {
public static void main(String args[]) {
Connection conn = null;
PreparedStatement psmd = null;
String sql = null;
try {
conn = ConnUtil.getConn();
File file = new File("F:\\1.jpg");// 要转换的文件
FileInputStream inputStream = new FileInputStream(file);// 将文件按二进制存储在一个字段内
// CREATE TABLE images (imgname text, img bytea);
sql = " insert into images values(?,?)";
psmd = conn.prepareStatement(sql);
psmd.setString(1, file.getName());
psmd.setBinaryStream(2, inputStream, (int) file.length());
int rs = psmd.executeUpdate();
if (rs < 0) {
System.out.println("存入数据失败!!!");
} else {
System.out.println("存入数据成功!!!");
}
} catch (Exception e) {
e.printStackTrace();
}
if (psmd != null) {
try {
psmd.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}


数据库中取出二进制数据并保存成本地图片文件:

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.sql.*;

public class GetFile {
public static void main(String args[]) {
Connection conn = null;
PreparedStatement psmd = null;
String sql = null;
OutputStream out = null;
try {
conn = ConnUtil.getConn();
sql = " SELECT img FROM images WHERE imgname = ?";
psmd = conn.prepareStatement(sql);
psmd.setString(1, "1.jpg");
ResultSet rs = psmd.executeQuery();
while (rs.next()) {
byte[] imgBytes = rs.getBytes(1);
// 实例化OutputStream对象,在f盘创建一个图片文件
out = new FileOutputStream("f:\\2.jpg");
// 将文件输出,内容则为byte数组里面的数据
out.write(imgBytes);
out.flush();
System.out.println("获取数据成功!!!");
}
} catch (Exception e) {
e.printStackTrace();
}
if (psmd != null) {
try {
psmd.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

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