首页 > 数据库 > MySQL > 正文

mysql中clob和blob的差别有哪些

2024-07-24 12:34:25
字体:
来源:转载
供稿:网友
  MySQL中的blob和clob的区别
 
  1、含义不同
 
  clob英文全称:Character Large Object(字符大对象)
 
  blob其全称:binary large object(二进制大对象)
 
  估计由英文名就能想到他们的作用,所以我们记东西的时候要联想记忆,不能全靠死记硬背。
 
  2、作用不同
 
  clob在数据库中通常用来存储大量的文本数据,即存储字符数据。
 
  blob用于存储二进制数据或文件,常常为图片或音频。
 
  MySQL中的blob和clob的详解示例
 
  clob
  clob用于存储大量的文本数据。大字段的操作常常以流的方式处理。
 
  相关类型如下:
 
  类型 最大大小
  TinyText 255字节
  Text 65535字节(约65K)
  MediumText 16 777 215字节(约16M)
  LongText 4 294 967 295 (约4G)
  创建person表
 
  CREATE TABLE person (
    name varchar(20),
    address text
  );
  插入数据
 
  import java.io.File;
  import java.io.FileReader;
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.PreparedStatement;
  import java.sql.SQLException;
  
  public class clob {
   /**
    * @param args
    */
   //驱动程序就是之前在classpath中配置的JDBC的驱动程序的JAR 包中
   public static final String DBDRIVER = "com.mysql.jdbc.Driver";
   //连接地址是由各个数据库生产商单独提供的,所以需要单独记住
   public static final String DBURL = "jdbc:mysql://192.168.0.4:3306/myDB";
   //连接数据库的用户名
   public static final String DBUSER = "root";
   //连接数据库的密码
   public static final String DBPASS = "";
  
   public static void main(String[] args) throws Exception {
   Connection con = null;
   PreparedStatement stmt = null;
   try {
   //1、加载数据库驱动程序
   Class.forName(DBDRIVER);
   //2、连接数据库
   con = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
   //3、创建Statement
   stmt = con.prepareStatement("insert into person(name,address) values(?,?)");
   stmt.setString(1,"April");
   stmt.setClob(2, new FileReader(new File("D://work//info.txt")));        
   //4、执行SQL语句
   stmt.executeUpdate();
   }catch(SQLException e) {
   //5、异常处理
   }
   finally {
   //6、清理资源
   if(con !=null)
   {
   con.close();
   }
   if(stmt!=null)
   {
   stmt.close();
   }
   }
   }
  }
  写入也可以使用语句
 
  stmt.setClob(2, new BufferedReader(new InputStreamReader(new ByteArrayInputStream("四川省成都市高新区".getBytes()))));
  执行结果
  
  读取数据
 
  stmt = con.prepareStatement("select * from person");
  rs = stmt.executeQuery();
  while(rs.next())
  {
   Clob address = rs.getClob("address");
   Reader reader = address.getCharacterStream();
   int temp = 0;
   while((temp = reader.read()) != -1)  
   {
   System.out.print((char)temp);
   }
   reader.close();
  }
  执行结果
 
  四川省成都市高新区
  浙江省杭州市西湖区
  blob
  blob用于存储二进制数据,常常为图片或音频。
 
  相关类型如下:
 
  类型 最大大小
  TinyBlob 255字节
  Blob 65535字节(约65K)
  MediumBlob 16 777 215字节(约16M)
  LongBlob 4 294 967 295 (约4G)
  创建student表
 
  CREATE TABLE student (
    name varchar(20),
    image blob
  );
  插入数据
 
  stmt = con.prepareStatement("insert into student(name,image) values(?,?)");
  stmt.setString(1,"April");
  stmt.setBlob(2, new FileInputStream("D://work//April.png"));
  stmt.executeUpdate();
  读取数据
 
  stmt = con.prepareStatement("select * from student");
  rs = stmt.executeQuery();
  while(rs.next())
  {
   Blob image = rs.getBlob("image");
   InputStream in = image.getBinaryStream();
   OutputStream out = new FileOutputStream("D://work//Harris.png");
   int temp = 0;
   while((temp = in.read()) != -1)  
   {
   out.write(temp);
   }
   in.close();
   out.close();
  }
  “mysql中clob和blob的区别有哪些”的内容就介绍到这里了,感谢大家的阅读。

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表