jdbc mysql查询显示图片_JDBC【向数据库中存入读取图片】

JDBC-向数据库中存入读取图片

注:此代码依赖自定义的数据库连接工具类

1.向数据库存入一张照片

import java.io.File;

import java.io.FileInputStream;

import java.sql.Connection;

import java.sql.PreparedStatement;

public class BlobTest01 {

public static void main(String[] args) throws Exception {

/**

* 向photo中插入一条数据

*/

//1.连接数据库

Connection con = JDBCUtils.getConnection();

//2.预编译sql语句

String sql = "insert into photo(name,phoFile) values (?,?)";

PreparedStatement ps = con.prepareStatement(sql);

//3.填充占位符

ps.setString(1, "cat");

File file = new File("D:\\testdir\\server\\cat.jpg");

FileInputStream fis = new FileInputStream(file);

ps.setBlob(2, fis);

//4.执行sql

ps.execute();

//5.关闭资源

JDBCUtils.closeConnection(con, ps);

}

}

2.从数据库中读取照片并存到本地文件夹中

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.sql.Blob;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

public class BlobTest02 {

/**

* 从数据库中读取照片存储到本地

*/

public static void main(String[] args) throws Exception {

//1.连接数据库

Connection con = JDBCUtils.getConnection();

//2.预编译sql语句

String sql = "select `id`,`name`,`phoFile` from photo where name = ?";

PreparedStatement ps = con.prepareStatement(sql);

//3.填充占位符

ps.setString(1, "cat");

//4.执行sql

ResultSet rs = ps.executeQuery();

if (rs.next()){

int id = rs.getInt(1);

String name = rs.getString(2);

Blob photo = rs.getBlob(3);

File file = new File("D:\\testdir\\catpho.jpg");

InputStream fis = photo.getBinaryStream();

FileOutputStream fos = new FileOutputStream(file);

byte[] buffer = new byte[1024];

int len = fis.read(buffer);

while (len != -1){

fos.write(buffer, 0, len);

len = fis.read(buffer);

}

//5.关闭资源

fis.close();

fos.close();

}

JDBCUtils.closeConnection(con, ps, rs);

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值