天天看點

在oracle中插入CLOB字段

import java.sql.*;

import java.io.*;

public class TestClob{

public void TestClob(){}

public static void main(String args[]){

try{

Class.forName("oracle.jdbc.driver.OracleDriver");

Connectionconn=DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:ora32","tjpt","tjpt");

conn.setAutoCommit(false);

//第一步:插入一個空的CLOB

String sql1="insert into news(content,id) values (EMPTY_CLOB(),'1')";

PreparedStatement ps1=conn.prepareStatement(sql1,new String[]{"id"});

ps1.executeUpdate();

ResultSet rs1 = ps.getGeneratedKeys();

rs1.next();

int id = rs1.getInt(1);

ps1.close();

//第二步:取出該CLOB

String sql2="select content from news where id=? for update";

PreparedStatement ps2=conn.prepareStatement(sql2);

ps2.setInt(1, id);

ResultSet rs2=ps2.executeQuery();

while (rs2.next()){

  CLOB clob = (CLOB) rs2.getClob(1);

     clob.truncate(0l);

     clob.setString(1,bean.getNcontent());

}

conn.commit();

}

catch(Exception e){e.printStackTrace();}

}

}

既然插入進去了,那我們還得要檢驗一下:插進去的是不是你想插進去的内容?以下就是讀取CLOB的代碼:

import java.sql.*;

import java.io.*;

public class ReadClob{

public void ReadClob(){}

public static void main(String args[]){

try{

Class.forName("oracle.jdbc.driver.OracleDriver");

Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ora32","tjpt","tjpt"); String sql1="select content from news";

PreparedStatement ps1=conn.prepareStatement(sql1);

ResultSet rs1=ps1.executeQuery();

while (rs1.next()){

oracle.sql.CLOB clob=(oracle.sql.CLOB)rs1.getClob(1);

BufferedReader in=new BufferedReader(clob.getCharacterStream());

StringWriter out=new StringWriter();

int c;

while((c=in.read())!=-1){

out.write(c);

}

String content=out.toString();

System.out.println (content);//輸出CLOB内容

}

}

catch(Exception e){e.printStackTrace();}

}

}

下面是自己寫的一個簡單的例子:

conn=DaoTools.getConn();

  String sql1 = "insert into hmh_test_table(userid,username,userdes) values (300,'rrr',EMPTY_CLOB())";

  try {

   conn.setAutoCommit(false);

   PreparedStatement ps= conn.prepareStatement(sql1);

   int i=ps.executeUpdate();

   ps.close();

   String sql2="select userdes from hmh_test_table where userid=? for update";

   PreparedStatement ps2=conn.prepareStatement(sql2);

   ps2.setInt(1, 300);

   ResultSet rs=ps2.executeQuery();

   while (rs.next()){

    CLOB clob =(CLOB)rs.getClob(1);

    Writer wr = clob.getCharacterOutputStream();

    wr.write("clob資料哦!!");

    wr.flush();

    wr.close();

   }

   rs.close();

   ps2.close();

   conn.commit();

  } catch (Exception e) {

   e.printStackTrace();

}