mysql Blob和Text类型

  • 一   对于mysql,除了常见的类型外,还有比较少见的Blob类型和Text类型,下面就两种类型进行进一步的解析
  • 二   大数据类型
  1.  Text类型(大文本系列)===>>VARCHAR的增强

          TINYTEXT: 255个字节                                                 TEXT:    65535字节    

          MEDIUMTEXT:  16M                                                    LONGTEXT: 4G

   

   2.Blob类型(大二进制系列)===>>BINARY的增强

          TINYBLOB:   255个字节                                     BLOB:   65535字节

           MEDIUMBLOB:  16M                                         LONGBLOB:     4G

   3.分别对应的java类型及其应用

            ① 存储一部小说或者text类型的文档,此时考虑使用TEXT系列.   TEXT系列对应Java中的String类型.   仅仅只需要把                          VARCHAR改成TEXT系  列 即可,Java代码不需要改动.

           ②二进制类型,主要用来存储图像,音频,视频等二级制数据. 一般的,在开发中我们都不会把二进制数据保存到数据库中,而                     是   把二进制文件的保存路径存储在数据库中,再通过路径去找到文件即可.

  • 三.把一张图片写入数据库和从数据库中读出来,存入到本地中 

// 把二进制文件存储到表中
	@Test
	public void testWrite()  {
		String hql = "insert into t_image (content) values (?)";
		Connection conn = null;
		PreparedStatement ps = null;
		try {
			 conn = JdbcUtil.getConnection();
			 ps = conn.prepareStatement(hql);
			InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("E:/WorkPlace_mars2_64/jdbc/1.png");
			ps.setBlob(1, new FileInputStream("E:/WorkPlace_mars2_64/jdbc/1.png"));
			ps.executeUpdate();
		} catch (SQLException | FileNotFoundException e) {
			e.printStackTrace();
		}finally{
			JdbcUtil.realse(null, ps, conn);
		}
	}
	
	// 把表中的二进制读出来
	@Test
	public void testRead()  {
		String hql = "select * from t_image where id = ? ";
		Connection conn = null;
		PreparedStatement ps = null;
		try {
			 conn = JdbcUtil.getConnection();
			 ps = conn.prepareStatement(hql);
			ps.setInt(1, 5);
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				Blob blob = rs.getBlob("content");
				InputStream is = blob.getBinaryStream();
				Path path = Paths.get("E:/WorkPlace_mars2_64/jdbc/2.png");
				Files.copy(is, path);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			JdbcUtil.realse(null, ps, conn);
		}
	}

猜你喜欢

转载自blog.csdn.net/m0_38068812/article/details/81212002
今日推荐