//数据库oracle8.16;jdk1.31; //处理clob字段时,无论存取,都报SQLException。“ORA-01002 :读取违反顺序”; //使用表(testclob)结构 id number,clobobj clob;只有两个字段; //下面注释中说明了异常出现的地方; import java.sql.*; import java.io.*;
public class TestClob { public static void main(String args[]){ String serverName = "192.168.2.142"; String sDBDriver = "oracle.jdbc.driver.OracleDriver"; String sConnStr = "jdbc:oracle:thin:@"+serverName+":1521:gdwx"; Connection conn = null; Statement stmt = null; ResultSet rs = null; try{ Class.forName(sDBDriver); conn = DriverManager.getConnection(sConnStr, "scott", "tiger"); String sqli = "insert into TestClob values(clob_seq.nextval,empty_clob())"; String sqls = "select * from TestClob where id = (select max(id) from TestClob) for update"; stmt = conn.createStatement(); stmt.execute(sqli); stmt.execute(sqls); /* stmt.execute(sqls);错误就是在这一行出现的 */ rs = stmt.getResultSet();
if(rs.next()){ oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob(2); Writer writer = clob.getCharacterOutputStream() ; writer.write("yesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes"); writer.flush() ; writer.close() ; } }catch(Exception e ){ System.out.println(e.getMessage()); }finally{ if(conn!=null){ try{ conn.close(); }catch(Exception ee){ System.out.println(ee); } } } } }
|
|