python mysql blob_Mysql的BLOB操作

本文详细介绍了MySQL中的BLOB类型,包括TinyBlob、Blob、MediumBlob、LongBlob四种,强调了根据数据大小选择合适类型的重要性。还展示了如何进行BLOB数据的存储和读取,提供多种Java实现方式,并探讨了charset设置对BLOB操作的影响,解决因编码导致的问题。此外,提到了max_allowed_packet参数设置,以避免存储大文件时的错误,以及通过分表存储提高查询效率的策略。
摘要由CSDN通过智能技术生成

该文只介绍了BLOB操作、稍后会有TEXT的操作文章。

chf@tsinghua.org.cn

MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。BLOB类型实际是个类型系列(TinyBlob、Blob、MediumBlob、LongBlob),除了在存储的最大信息量上不同外,他们是等同的。

MySQL的四种BLOB类型

类型  大小(单位:字节)

TinyBlob  最大 255B

Blob  最大 65K

MediumBlob  最大 16M

LongBlob  最大 4G

实际使用中根据需要存入的数据大小定义不同的BLOB类型。

需要注意的是:如果你存储的文件过大,数据库的性能会下降很多。

二、mysql中的blob存取

create table Dish {

int id;

blob photo;

};

下面是从数据库里写的方法:

String filepath =

(String)session.getAttribute("file");//这里获得的是用jspsmartupload上传的文件的路径

File file = new

File(filepath);

FileInputStream fin = new

FileInputStream(file);

dataBS = new

blobConn();

con = dataBS.getConn();

String erpsql =

"insert into Dish

values(?,?)";

PreparedStatement stmt =

con.prepareStatement(erpsql);

stmt.setString(2,String.valueOf(id));

stmt.setBinaryStream(3,fin,(int)file.length());//想数据库里插入是很简单的,就一行,但这种方法只有mysql可以用

stmt.executeUpdate();

fin.close();

stmt.close();

con.close();

下面是从数据库里读的方法:

1.BufferedInputStream inputimg = null;

try {

Connection con = sqlDS.getConnection();//简写,获得数据库连接

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery("select from Dish where id = 11");

if(rs.next()){

java.sql.Blob blob =

(java.sql.Blob)rs.getBlob("photo");

input = new BufferedInputStream(blob.getBinaryStream);

}

BufferedImage image = null;

image = javax.imageio.ImageIo.read(input);

ServlerOutputStream sos = response.getOutputStream();

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值