mysql blob取值_mysql存取blob类型数据

该博客展示了如何使用Java的PreparedStatement和Blob接口在MySQL中插入和查询Blob类型的文件数据。通过FileInputStream读取文件,然后利用Blob的setBlob方法将文件内容存储到数据库,再通过getBinaryStream方法读取并保存到本地文件系统。
摘要由CSDN通过智能技术生成

packageblobtest;importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.sql.Blob;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;public classReadWriteBlobwithMysql

{privateConnection con;privateStatement stmt;publicStatement getStmt()

{returnstmt;

}public voidsetStmt(Statement stmt)

{this.stmt =stmt;

}publicResultSet getRs()

{returnrs;

}public voidsetRs(ResultSet rs)

{this.rs =rs;

}

ResultSet rs;publicConnection getCon()

{returncon;

}public voidsetCon(Connection con)

{this.con =con;

}public void insert(Connection con) throwsSQLException

{

String fileName= "E:\\JavaProject\\HelloWorld\\src\\blobtest\\test.html";

File file= newFile(fileName);try{

FileInputStream fis= newFileInputStream(file);

String sql= "insert into blobtest values(‘12‘,‘0000‘,‘平安银行‘,?)";

PreparedStatement prest=con.prepareStatement(sql);

prest.setBlob(1, fis, file.length());

prest.execute();

}catch(FileNotFoundException e)

{//TODO Auto-generated catch block

e.printStackTrace();

}

}public void queryBlob(String id, Connection con) throwsIOException

{

String fileName= "E:\\JavaProject\\HelloWorld\\src\\blobtest\\test1.html";

String sql= "select * from blobtest where primary_id= ?";try{

PreparedStatement prest=con.prepareStatement(sql);

prest.setString(1, id);

ResultSet rs=prest.executeQuery();while(rs.next())

{

Blob bl= rs.getBlob("blob_data");//数据保存在表的blob_data字段中,这里取出这里保存的数据。

InputStream is = bl.getBinaryStream(); //查看blob,可以通过流的形式取出来。 注意一定要是用流的方式读取出来

BufferedInputStream buffis = newBufferedInputStream(is);//保存到buffout

BufferedOutputStream buffout = new BufferedOutputStream(newFileOutputStream(fileName));byte[] buf = new byte[1024];int len = buffis.read(buf, 0, 1024);while (len > 0)

{

buffout.write(buf);

len= buffis.read(buf, 0, 1024);

}

buffout.flush();

buffout.close();

buffis.close();

}

}catch(SQLException e)

{//TODO Auto-generated catch block

e.printStackTrace();

}

}publicReadWriteBlobwithMysql(Connection con)

{this.setCon(con);try{

stmt=con.createStatement();

}catch(SQLException e)

{

e.printStackTrace();

}

}public static voidmain(String[] args)

{

Connection con=JDBCUtil.getConnection();

ReadWriteBlobwithMysql dao= newReadWriteBlobwithMysql(con);try{//dao.createTable();//dao.insert(con);

dao.queryBlob("12",con);

}catch(IOException e)

{

e.printStackTrace();

}finally{

JDBCUtil.close(dao.getRs(), dao.getStmt(), dao.getCon());

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值