java读取数据库中的Blob对象:IO流的方式
读取数据库中的Blob对象:IO流的方式:
package com.mldn;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.io.FileOutputStream;
public class BlobDemo1
{
/**
读取二进制大数据
*/
// 连接驱动路径
public static final String DRIVER = “com.mysql.jdbc.Driver”; // “org.gjt.mm.mysql.driver”
// 定义数据源URL:数据库地址
public static final String DBURL = “jdbc:mysql://localhost:3306/BigOb?characterEncoding=utf8”;
// 定义数据库登录的用户名:
public static final String USERNAME = “root”;
// 定义数据库登录的密码:
public static final String PASSWORD = “123456”;
public static void main(String[] args) throws Exception // 抛出所有异常
{
Connection conn = null; // 数据库连接
PreparedStatement pstmt = null; // 预处理语句
ResultSet rs = null; // 输出结果
// 加载数据库驱动
Class.forName(DRIVER);
// 获取数据库连接
conn = DriverManager.getConnection(DBURL, USERNAME, PASSWORD);
int id = 1; // 指定查询
// 预查询语句
String sql = “SELECT id, name, photo FROM Bigob where id = ?”;
// 预处理操作对象
pstmt = conn.prepareStatement(sql);
// 设置预处理
pstmt.setInt(1, id);
// 执行查询
rs = pstmt.executeQuery();
// 只进行一次操作
if (rs.next()) // rs每次调用标记一行,存在返回true,基于ResultSet的所有操作都必须先定位:标记行后再展开读取操作!
{
String name = rs.getString(2);
InputStream in = null; // 读取流
in = rs.getBinaryStream(“photo”); // 获取二进制流
File file = new File(“/home/ubuntu/logo.jpg”); // 输出文件
OutputStream out = null;
out = new FileOutputStream(file); // 实例化输出流
int temp = 0;
while ((temp = in.read()) != -1)
{
out.write(temp); // 边读边写
}
in.close();
out.close();
System.out.println(“图片名称:” + rs.getString(“name”)); // 获取图片名称
}
// 关闭操作与连接
rs.close();
pstmt.close();
conn.close();
}
}
/*
ubuntu@xu-desktop:~$ java com.mldn.BlobDemo1
图片名称:logo-edubuntu.png
// 此时/home/ubuntu/下出现logo.png图片!
*/
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《java读取数据库中的Blob对象:IO流的方式》
本文地址:http://www.xiupu.net/archives-159.html
关注公众号:
微信赞赏
支付宝赞赏