zoukankan      html  css  js  c++  java
  • NVCHAR2 to NCLOB

      项目过程中发现数据库设计的有点问题,字段的长度太小了,不怎么符合需求。因此需要将原来的NVCHAR2类型的字段修改成为NCLOB类型的。

      一开始以为只要ALTER一下TABLE,MODIFY一下字段类型就OK了。但是却报了一个错误:ORA-22858:invalid   alteration   of   datatype。意思就是NCLOB类型的是不能由其他的类型修改而来。OK,那我就加一个列,然后将原来列的值放到这个列里面,再将原来的列DROP掉。

      要修改的表为BULLETIN_INFO,修改的字段为BULLETIN_CONTENT。

    SQL代码
    ALTER TABLE BULLETIN_INFO ADD BULLETIN_CONTENT_BAK NCLOB;
    UPDATE BULLETIN_INFO SET BULLETIN_CONTENT_BAK = BULLETIN_CONTENT;
    ALTER TABLE BULLETIN_INFO DROP COLUMN BULLETIN_CONTENT;
    ALTER TABLE BULLETIN_INFO RENAME COLUMN BULLETIN_CONTENT_BAK TO BULLETIN_CONTENT;

      这样就实现了BULLETIN_CONTENT NVCHAR2(2000)到BULLETIN_CONTENT NCLOB的转换。

      在Java代码里面也需要修改。Java代码是同事做的。

    代码
           private void checkThinConnect() {
               Session session 
    = null;
               Transaction tran 
    = null;
               
               
    try {
                   String strName 
    = "";

                    
                    
    //// 实例化 DAO
                    StudentDAO dao = new StudentDAO();
                    session 
    = dao.getSession();
                    
    int i = 0;
                   
                   
    while (i<100) {
                       i
    ++;
                       strName 
    += "一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十";
                       System.out.println(strName.length());
                        
                        
    ////打开事务
                        tran = session.beginTransaction();
                        
    //// 生成普通 Java 类
                        Student bean = new Student();
                        
    //// 设置属性
                        bean.setId(String.valueOf(i));
                        
    //bean.setId("ST090807135532625");
                        bean.setUsername("一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十");
                        bean.setPassword(
    "1234");
                        bean.setAge(Long.parseLong(
    "20"));
                        bean.setCreatetime(
    new Date());
                        bean.setContent(Hibernate.createClob(
    "1"));
                        
    //// 插入数据
                        session.save(bean);
                        session.flush();
                        session.refresh(bean, LockMode.UPGRADE);
                        SerializableClob clob 
    = (SerializableClob)bean.getContent();
                        Clob jClob 
    = clob.getWrappedClob();
                        CLOB oClob 
    = (CLOB)jClob;
                        Writer wt 
    = oClob.getCharacterOutputStream();   
                        wt.write(strName);
                        wt.close();
                        session.flush();
                        
    //// 提交事务
                        tran.commit();
                   }
               } 
    catch (Exception e) {
                   
    if (tran != null) {
                       tran.rollback();
                   }
                   e.printStackTrace();
               } 
    finally {
                   
    if (session != null) {  
                       session.clear();
                       session.close();
                   }
               }
               
           }
  • 相关阅读:
    HTML 页面的 批量删除的按钮
    HTML 选择器
    ....
    java 反射机制
    插件库
    向上滚动
    浮动元素定位float
    中文字体对应的英文名称
    echarts入门教程
    ie9浏览器window.openbug
  • 原文地址:https://www.cnblogs.com/docmao/p/1641017.html
Copyright © 2011-2022 走看看