打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Clob_java.lang.Sting
一:oracle的clob与java的string类型转换:
1.hibernate2.x(Clob,Blob)使用方法
Transaction transaction = session.beginTransaction();
Object obj = new Object();
obj.setContent(Hibernate.createClob(" "));
session.flush();
session.refresh(documentinfo1, LockMode.UPGRADE);
//object.getContent()得到的对象是java.sql.clob类型,hibernate支持强制转换为oracle.sql.CLOB
 CLOB clob = (CLOB) object.getContent();
Writer out = clob.getCharacterOutputStream();
out.write(content); 
out.close();
transaction.commit();
session.close();
2.Hibernate3.x在LOB(Clob,Blob)操作方面比Hibernate2多了一层封装。
在Hibernate3.x中,将Clob和Blob封装成了SerializableClob和 SerializableBlob两个对象。
代码如下:
2.1:string 写入oracle clob
2.1.1:pojo类:
import java.sql.Clob;
private Clob artContent;
2.1.2:hbm.xml文件
 <property name="artContent" type="java.sql.Clob"/>
2.1.3:实现类:
import java.sql.Clob;
import oracle.sql.CLOB; 
public class FindByHqlDaoImpl extends HibernateDaoSupport
public class ArticleDaoImpl extends FindByHqlDaoImpl
SessionFactory sf = this.getHibernateTemplate().getSessionFactory();
  Session session =sf.openSession();
  Transaction transaction = session.beginTransaction();
  art.setArtContent(Hibernate.createClob(" "));
  session.save(art);
  session.flush();
  session.refresh(art, LockMode.UPGRADE);  
  SerializableClob cb = (SerializableClob)art.getArtContent();
  java.sql.Clob wrapClob = cb.getWrappedClob();
  oracle.sql.CLOB clob = (oracle.sql.CLOB) wrapClob;  
  Writer writer = clob.getCharacterOutputStream();  
  writer.write(temp);  
  writer.close(); 
  transaction.commit();
  session.close();
使用注:
session.save(art);必需的,不能用getHibernateTemplate().save();
SerializableClob cb = (SerializableClob)art.getArtContent();
java.sql.Clob wrapClob = cb.getWrappedClob();
必需的,如果直接用java.sql.Clob wrapClob=(oracle.sql.CLOB)artContent;报转换异常
Session session =sf.openSession();session.close();session使用后关闭
java.lang.ClassCastException 错误,提示oracle.sql.CLOB不能强制转换为java.sql.clob时还有一种可能:
oracle 连接的jar包(classes12.jar和ojdbc14.jar)重复用了会报此错误.
2.2:读出oracle 中的clob转换为string:
private boolean imgManagerForAddArt(Clob temp)
{
   Reader is = temp.getCharacterStream();
      BufferedReader br = new BufferedReader(is);
      String s = br.readLine();
      StringBuffer sb = new StringBuffer();
      while (s != null)
      {
      // 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING
       sb.append(s);
       s = br.readLine();
      }
      reString = sb.toString();
}
java.sql.clob 类中有reader re = java.sql.clob.getCharacterStream();
oracle.sql.CLOB 类中有Writer writer =(oracle.sql.CLOB) clob.getCharacterOutputStream(); 
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Hibernate对与Oracle中Clob类型的使用
hibernate 操作clob,blob对象
java数据类型,hibernate数据类型,标准sql数据类型之间的对应表
11.1 Hibernate的内置映射类型
hibernate映射文件的配置
Mysql,Oracle,Java数据类型对应
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服