但我用了clob后,插值进去以后再读出来是空的,但记录是有的,请问是怎么回事阿?

解决方案 »

  1.   

    先要insert一个empty_clob()指针。
    然后将文本update进去。
      

  2.   

    大哥,我初次用oracle,请详细列出步骤代码不胜感激。
      

  3.   

    package pub.dbcon;import java.io.OutputStream;
    import java.sql.DriverManager;
    import java.sql.Connection;
    import java.sql.Types;
    import java.sql.Statement;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.*;
    import oracle.jdbc.driver.*;
    import oracle.sql.*;
    import java.io.*;
    import pub.dbcon.DBConnection;public class DatabaseClob{

    public String getClob(String sqlStr){
    Connection conn = null;
    Statement stmt = null;
    CLOB lob_loc = null;
    String buf="";
    int len=0;
    try{
    DBConnection myConn=new DBConnection();
    conn=myConn.getConn();
    conn.setAutoCommit (false);
    stmt = conn.createStatement ();
    ResultSet rset = stmt.executeQuery (sqlStr);
    if (rset.next())
    {
    lob_loc = ((OracleResultSet)rset).getCLOB (1);
    }
    len =(int)lob_loc.length ();
    buf = lob_loc.getSubString(1,len);
        }catch(Exception e){
             System.out.println("建立Statement时错误:"+e.toString());
         }
    try{   
    stmt.close();
    conn.commit();
    conn.close();
    }catch(Exception e){
        System.out.println("关闭数据库连接时错误:"+e.toString());
    }     
        return buf;
    }

    public String setClob(String sqlStr,String clobName,String info) {

         String result=null;
         Connection conn = null;
         PreparedStatement stmt = null;
         ResultSet rs =  null;
         java.io.Writer writer;
        
    char[] data=new char[info.length()];
    try{
        DBConnection myConn=new DBConnection();
        conn = myConn.getConn();
        conn.setAutoCommit(false);
        stmt = conn.prepareStatement(sqlStr,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);
        rs =  stmt.executeQuery();
        
        if (rs.next())
        {
         try{
         Clob clob = rs.getClob(clobName);
         writer=((CLOB)clob).getCharacterOutputStream();
         info.getChars(0,info.length(),data,0);
         writer.write(data);
         writer.flush();
         writer.close();
         conn.commit();
         }catch(Exception e)
         {
         conn.rollback();
         result=e.toString();
         System.out.println(e.toString());
         }
        }else{
         result = "数据不存在!";
        }
        rs.close();
        stmt.close();
        conn.close();
    }catch(Exception e){
             System.out.println("建立Statement时错误:"+e.toString());
             result="建立Statement时错误:"+e.toString();
        }
        return result;
    }}