insert data into Oracle Clob

本文提供了一个使用Java和Oracle数据库进行CLOB类型数据插入与查询的示例代码。演示了如何通过Java JDBC API创建、更新及读取CLOB数据,并确保了事务的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.sql.*;   
import java.io.*;   
import oracle.jdbc.driver.OracleResultSet;  
import oracle.sql.CLOB;  
public class TestOracleClob implements Serializable{   
 public static void main(String[] args)   
 {   
   
  //create table test (id integer,content clob);  
  System.out.println("-------------------insert -----------------");  
  try{  
   DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());  
Connection con = DriverManager.getConnection ("oracle server",  
   "loginid", "loginpassword");   
  //Class.forName("oracle.jdbc.driver.OracleDriver");  
    
  con.setAutoCommit(false);  
  //Ok 1  
  String sql="insert into test values(1,empty_clob())";  
  Statement stmt=con.createStatement();  
  ResultSet rs=stmt.executeQuery(sql);  
  System.out.println("-------------------insert -----------------");  
  String sqll="select content from test where id=1 for update";      
  ResultSet rss=stmt.executeQuery(sqll);  
    
  if(rss.next()){  
   //CLOB clob = ((OracleResultSet)rss).getCLOB(1);  
 oracle.sql.CLOB  clob= (oracle.sql.CLOB)rss.getClob("content");  
   clob.putString(1,"here is a string which contains more than 4000 character");  
   sql="update test set content=? where id=1";  
   PreparedStatement pstmt=con.prepareStatement(sql);  
   pstmt.setClob(1,clob);  
   pstmt.executeUpdate();  
   pstmt.close();  
  }    
  con.commit();  
  
  //Ok 2  
  //String sql1="insert into test values(2,empty_clob())";  
  //ResultSet rs3=stmt.executeQuery(sql1);  
  String sql12="insert into test values(?,?)";  
  PreparedStatement pstmt1=con.prepareStatement(sql12);  
  pstmt1.setInt(1,2);  
  pstmt1.setClob(2,oracle.sql.CLOB.empty_lob());  
  pstmt1.executeUpdate();  
   
  String sqll2="select content from test where id=2 for update";  
  ResultSet rss2=stmt.executeQuery(sqll2);  
  if(rss2.next()){  
   CLOB clob = ((OracleResultSet)rss2).getCLOB(1);  
   clob.putString(1,"affffffffffdfdfdfdddddddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdddfff");  
   String sql1="update test set content=? where id=2";  
   PreparedStatement pstmt=con.prepareStatement(sql1);  
   pstmt.setClob(1,clob);  
   pstmt.executeUpdate();  
   pstmt.close();  
  }  
  con.commit();  
  rss.close();  
  rss2.close();  
  pstmt1.close();  
  rs.close();  
  stmt.close();  
  con.close();  
  System.out.println("-------------insert ok-------------");  
  }catch(Exception e){  
   System.out.println("insert:"+e);  
  }  
  System.out.println("-------------------query -----------------");  
  try{  
  String content="";  
  //Class.forName("oracle.jdbc.driver.OracleDriver");  
  DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());  
  Connection con = DriverManager.getConnection ("oracleserver",  
   "id", "pass");   
    
  Statement stmt=con.createStatement();  
  String sql="select content from test where id=1";  
  ResultSet rs=stmt.executeQuery(sql);  
  if(rs.next()){  
   CLOB clob = ((OracleResultSet)rs).getCLOB(1);  
   if(clob!=null){  
   Reader is=clob.getCharacterStream();  
   BufferedReader br=new BufferedReader(is);  
   String s=br.readLine();  
   while(s!=null){  
    content+=s+",";  
    s=br.readLine();  
    }  
   }  
     
  }  
  rs.close();  
  stmt.close();  
  con.close();  
  System.out.println("clob:"+content);  
  System.out.println("-------------query ok-------------");  
  }catch(Exception ee){  
   System.out.println("Exception:"+ee);  
  }  
    
 }  
 }  

I use Oracle 9i and Java 1.4, JDBC 9i, friend also test above code on Oracle 8i with Java 1.2, hope this helps.

本文转自Reprinted from:http://www.coderanch.com/t/299447/JDBC/databases/insert-data-Oracle-Clob


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值