采用Blob类型提供的方法输出Blob
上篇以IO流的形式读取Blob字段,还可以采用Blob类型提供的方法输出Blob:
package com.mldn;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Blob;
import java.io.File;
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);
Blob blob = rs.getBlob(“photo”); // 获取Blob对象
byte[] bytes = blob.getBytes(1, (int)blob.length()); // 将整个图片数据一次性读入内存:前提内存空间足够
File file = new File(“/home/ubuntu/logo.jpg”); // 输出文件
OutputStream out = null;
out = new FileOutputStream(file); // 实例化输出流
out.write(bytes); // 一次性写入磁盘
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图片!
// 使用Blob的操作,比使用IO流输出方便地多
*/
// 一般大型数据不会直接保存在数据库中,网站上存储的电影,不可能保存在数据库中,那样下载的操作太复杂了,这时候采用一种方案:
//数据库保存的是文件存储路径的映射!访问的时候将从该路径访问!
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《采用Blob类型提供的方法输出Blob》
本文地址:http://www.xiupu.net/archives-160.html
关注公众号:
微信赞赏
支付宝赞赏