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 com.brjl.database.*;public class DatabaseClob{

public String getClob(String sqlStr){
Connection conn = null;
Statement stmt = null;
CLOB lob_loc = null;
String buf="";
int len=0;
try{
JdbcConnect myConn=new JdbcConnect();
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(SQLException 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{
JdbcConnect myConn=new JdbcConnect();
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());
     }
    }
    rs.close();
stmt.close();
conn.close();
}catch(SQLException e){
         System.out.println("建立Statement时错误:"+e.toString());
         result="建立Statement时错误:"+e.toString();
    }
    return result;
}}

解决方案 »

  1.   

    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 com.brjl.database.*;public class DatabaseClob{

    public String getClob(String sqlStr){
    Connection conn = null;
    Statement stmt = null;
    CLOB lob_loc = null;
    String buf="";
    int len=0;
    try{
    JdbcConnect myConn=new JdbcConnect();
    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(SQLException 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{
    JdbcConnect myConn=new JdbcConnect();
    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());
         }
        }
        rs.close();
    stmt.close();
    conn.close();
    }catch(SQLException e){
             System.out.println("建立Statement时错误:"+e.toString());
             result="建立Statement时错误:"+e.toString();
        }
        return result;
    }}
      

  2.   

    看看oracle的sample 里面有很具体的例子的
      

  3.   

    CLOB/BLOB/TEXT这类大容量的字段要用io流