请问在oracle中存储新闻主体部分应该用什么字段?为什么我用clob字段在表中不能插入数据?

解决方案 »

  1.   

    为什么我用clob字段在表中不能插入数据?
    ==================================
    怎么插入的?应该使用dbms_lob包中的过程来操作。
      

  2.   

    我的可以啊,不知道你插入数据时,提示什么错?(NVARCHAR2最多可存2000个汉字,blob一般存放二进制的数据,CLOB一般存放文本数据!)
    SQL> create table test1 (c clob);表已创建。SQL> insert into test1 values('村在夺取');已创建 1 行。SQL> select * from test1;C
    -------------------------------------------村在夺取
      

  3.   

    clob数据过大时不能按一般字段存储添加   /**
        * 往数据库中插入一个新的CLOB对象
        *
        * @param infile - 数据文件
        * @throws java.lang.Exception
        * @roseuid 3EDA04A902BC
        */
       public static void clobInsert(String infile) throws Exception
       {
           /* 设定不自动提交 */
           boolean defaultCommit = conn.getAutoCommit();
           conn.setAutoCommit(false);       try {
               /* 插入一个空的CLOB对象 */
               stmt.executeUpdate("INSERT INTO TEST_CLOB VALUES ('111', EMPTY_CLOB())");
               /* 查询此CLOB对象并锁定 */
               ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR UPDATE");
               while (rs.next()) {
                   /* 取出此CLOB对象 */
                   oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");
                   /* 向CLOB对象中写入数据 */
                   BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
                   BufferedReader in = new BufferedReader(new FileReader(infile));
                   int c;
                   while ((c=in.read())!=-1) {
                       out.write(c);
                   }
                   in.close();
                   out.close();
               }
               /* 正式提交 */
               conn.commit();
           } catch (Exception ex) {
               /* 出错回滚 */
               conn.rollback();
               throw ex;
           }       /* 恢复原提交状态 */
           conn.setAutoCommit(defaultCommit);
       }
      

  4.   

    clob数据过大不能和一般的数据添加类似的插入。。要转换成数据流的形式