疯狂

STANDING ON THE SHOULDERS OF GIANTS
posts - 481, comments - 486, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

clob blob

Posted on 2009-11-02 15:01 疯狂 阅读(350) 评论(0)  编辑  收藏 所属分类: java database
mysql   的机制其实应该是这样的:当你数据库缓存中的数据量达到tmp_table_size时,它会自动提交一次,然后继续接下来的操作,每tmp_table_size刷新数据库缓存

   MySQL 中的 BLOB 数据由四种类型体现,分别是 TINYBLOB 其容量为 256 字节、BLOB 其容量为 64KB、MEDIUMBLOB 其容量为 16MB、LONGBLOB 其容量为 4GB。

  CLOB类型默认为1m 如果大于的话可能会出现

   Packet for query is too large (37748784 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable

 异常 这是可以在

[mysqld]下面添加 max_allowed_packet=10M来扩大限制

在 jdk 6。0 以前 向数据库插入clob 和blob数据的操作方法:

 void setBinaryStream(int parameterIndex, java.io.InputStream x, int length)方法

而在jdk 6.0以后就可以用

void setClob(int parameterIndex, Reader reader)

void setBlob(int parameterIndex, InputStream inputStream)方法来插入clob/blob

读取时候可以用读取流来处理或者用:

clob的时候可以

用 Clob.getSubString(pos, length)不过length是个int型的

或者用

Java代码 复制代码
  1. Clob c = rs.getClob("clumn");   
  2. StringBuffer a = new StringBuffer(1024);   
  3. Reader r = c.getCharacterStream();   
  4. char[] cc = new char[1];   
  5. int i = -1;   
  6. while((i =r.read(cc))!=-1){   
  7.     a.append(cc);   
  8. }  

 读取blob可以用:

Blob b = rs.getBlob("clumn");
 java.io.InputStream getBinaryStream ()或者getBytes(pos, length)

 


只有注册用户登录后才能发表评论。


网站导航: