0010|0010| BLOB类型处理

概述

  • BLOB是可变的数据类型,在开发中,一般不会把二进制的文件(图片、音频、视频)直接存放在数据库中,而是把文件的存储路径存储在数据库中。
拔萝卜 大小
TINYBLOB 255个字节
BOLB 65535字节
MEDIUMBLOB 16M
LONGBLOB 4G
  • 在MySQL中,TEXT 类型 VARCHAR 类型是一样的,仅仅是容量不一样而已,TEXT一般用于存储大文本。(在Java代码中,是相同的,都是作为String类型)
泰克斯特 大小
TINYTEXT 255个字节
TEXT 65535个字节
MEDIUMTEXT 16M
LONGTEXT 4G
数据类型
数据类型 说明
CHAR 保存固定长度的字符串,可包含字母、数字以及特殊字符。在括号中指定字符串的长度。最多 255 个字符。
VARCHAR 保存可变长度的字符串,可包含字母、数字以及特殊字符。在括号中指定字符串的最大长度。最多 255 个字符。(如果值的长度大于 255,则被转换为 TEXT 类型)
数据类型 说明
TINYTEXT 存放最大长度为 255 个字符的字符串。
TEXT 存放最大长度为 65,535 个字符的字符串。
数据类型 说明
BLOB 用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。
MEDIUMTEXT 存放最大长度为 16,777,215 个字符的字符串。
MEDIUMBLOB 用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。
LONGTEXT 存放最大长度为 4,294,967,295 个字符的字符串。
LONGBLOB 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。
数据类型 说明
ENUM(x,y,z,etc.) 允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。(注释:这些值是按照你输入的顺序存储的)(可以按照此格式输入可能的值:ENUM(‘X’,‘Y’,‘Z’))
SET 与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。
举一个栗子
  • 把一张图片存到 t_image 表中。
//把一张图片存到 t_image 表中。 @Test public void testInsertImg() throws Exception{ String sql = "INSERT INTO t_image (img) VALUES (?)"; Connection conn = JDBCUtil.getConnection(); PreparedStatement psta = conn.prepareStatement(sql); psta.setBlob(1, new FileInputStream("这里写图片的地址")); psta.executeUpdate(); JDBCUtil.close(conn, psta, null); }

【0010|0010| BLOB类型处理】0010|0010| BLOB类型处理
文章图片

  • 将 t_image 表中的图片存到磁盘中
//将 t_image 表中的图片存到磁盘中。 @Test public void testSaveImg() throws Exception{ String sql = "SELECT * FROM t_image WHERE id=?"; Connection conn = JDBCUtil.getConnection(); PreparedStatement psta = conn.prepareStatement(sql); psta.setLong(1, 6l); ResultSet rs = psta.executeQuery(); if(rs.next()) { Blob img = rs.getBlob("img"); InputStream in = img.getBinaryStream(); //文件拷贝 Files.copy(in, Paths.get("这里写新文件的地址和名字")); } }

    推荐阅读