我往mysql中的blob字段插入图片,报错:try{
Class.forName("com.mysql.jdbc.Driver");//驱动的名称
Connection c=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/image?user=root&password=liuys");
//访问的数据库的帐号密码
Statement s=c.createStatement();
File f = new File("F:/photo/zhangting/0.jpg" );
try{
PreparedStatement pstm = c.prepareStatement("insert into image(name,img) values (?,?)");
InputStream is = new FileInputStream(f);
pstm.setString(1, "m1");
pstm.setBinaryStream(2, is, is.available());
int count = pstm.executeUpdate();
if(count>0){
System.out.println("插入成功");
}else{
System.out.println("插入失败");
}
is.close();
pstm.close();
c.close();
} catch (Exception e){
e.printStackTrace();
}
s.close();
}catch(Exception e){
e.printStackTrace();}//捕获异常
} 报如下的错误: Data too long for column 'img' at row 1
请高手指点,本人接触数据库的知识不是太多,谢了。
Class.forName("com.mysql.jdbc.Driver");//驱动的名称
Connection c=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/image?user=root&password=liuys");
//访问的数据库的帐号密码
Statement s=c.createStatement();
File f = new File("F:/photo/zhangting/0.jpg" );
try{
PreparedStatement pstm = c.prepareStatement("insert into image(name,img) values (?,?)");
InputStream is = new FileInputStream(f);
pstm.setString(1, "m1");
pstm.setBinaryStream(2, is, is.available());
int count = pstm.executeUpdate();
if(count>0){
System.out.println("插入成功");
}else{
System.out.println("插入失败");
}
is.close();
pstm.close();
c.close();
} catch (Exception e){
e.printStackTrace();
}
s.close();
}catch(Exception e){
e.printStackTrace();}//捕获异常
} 报如下的错误: Data too long for column 'img' at row 1
请高手指点,本人接触数据库的知识不是太多,谢了。
BLOB介绍 BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。根据Eric Raymond的说法,处理BLOB的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。但也有专家强调,这种处理大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。在数据库中存放体积较大的多媒体对象就是应用程序处理BLOB的典型例子。mysql BLOB类型 MySQL中,BLOB是个类型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同。
MySQL的四种BLOB类型
类型 大小(单位:字节)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4Glinux修改etc/my.cnf
[mysqld]
max_allowed_packet = 16M //不同于[mysqldump]下的max_allowed_packet