Java实现对Mysql的图片存取操作详解编程语言
2023-06-13 09:20:35 时间
1.MySQL中的BLOB类型
Mysql中可以存储大文件数据,一般使用的BLOB对象。如图片,视频等等。
BLOB是一个二进制大对象,可以容纳可变数量的数据。因为是二进制对象,所以与编码方式无关。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。
四种字段类型保存的最大长度如下:
TINYBLOB 255 bytes
BLOB 65535 bytes(64KB)
MEDIUMBLOB 16,777,215 bytes(16MB) (2^24 1)
LONGBLOB 4G bytes (2^32 – 1)
2.java对MySQL图片的读取
下面是test数据库中定义的phototest表结构。
4 public static void main(String[] args) { 5 DBConnection DB = new DBConnection(); //负责连接MySQl数据库的类 6 Connection con = null; 7 PreparedStatement ps = null; 8 ResultSet rs = null; 9 InputStream in = null; 10 try { 11 //从本地硬盘硬盘读取一张图片保存到数据库 12 con=DB.getConn(); 13 in=new FileInputStream("sdf.png"); 14 ps=con.prepareStatement("insert into test.phototest values(?,?)"); 15 ps.setInt(1,2); 16 ps.setBinaryStream(2, in, in.available()); 17 ps.executeUpdate(); 18 in.close(); 19 DB.closeConn(con); 21 //从数据库读取图片保存到本地硬盘 22 con=DB.getConn(); 23 ps=con.prepareStatement("select * from test.phototest where id=?"); 24 ps.setInt(1,2); 25 rs=ps.executeQuery(); 26 rs.next(); //将光标指向第一行 27 in=rs.getBinaryStream("photo"); 28 byte[] b=new byte[in.available()]; //新建保存图片数据的byte数组 29 in.read(b); 30 OutputStream out=new FileOutputStream("222.jpg"); 31 out.write(b); 32 out.flush(); 33 out.close(); 34 DB.closeConn(con); 35 } 36 catch (Exception e) { 37 System.out.println("Error::"+e); 38 } 39 } 40 }
3.选择合适的字段大小
如果选择的字段类型的最大长度较小,放不下保存的数据,可能会报出MySQL数据截断异常。如:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column photo at row 1
Mysql 中文参考手册列类型:
http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#blob
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/11628.html
cjavamysql相关文章
- mysql:Java通过驱动包(jar包)连接MySQL数据库—步骤总结及验证
- Java使用JDBC连接MYSQL数据库增删改查示例详解编程语言
- 用Java代码备份和还原MySQL数据库详解编程语言
- java压缩与解压(Java.util.zip)详解编程语言
- Java学习笔记之七java函数的语法规则总结详解编程语言
- Java学习笔记之二java标识符命名规范详解编程语言
- Java数据类型和MySql数据类型对应表详解编程语言
- ?使用 Java 连接 MySQL 数据库的步骤(java怎么连接mysql)
- 库MySQL Database Backup with Java.(java备份mysql)
- MySQL数据库中的存储类型细节(mysql数据库存储类型)
- java 调用mysql的存储过程(简单示例)详解编程语言
- 数据库Java连接MySQL数据库实现数据添加(java添加mysql)
- MySQL查询:非空之道(mysql查询非空)
- 服务MySQL命令行启动服务的步骤(mysql命令启动)
- MySQL关闭连接的简单命令行指令(mysql关闭连接命令)
- MySQL菜鸟教程:快速入门及免费下载(mysql菜鸟教程下载)
- 连接MySQL连接技术之Java实现(java的mysql)
- MySQL之Java实现主从复制(java mysql主从)
- Java与MySQL事务处理(mysql中java事物)
- MySQL一般语句指南快速上手SQL基本操作(mysql一般语句)
- MySQL环境下载指南(mysql下载环境)
- MySQL不是编程语言或可执行程序(mysql不是可运行程序)