1. 程式人生 > >DB2之CLOB物件用法

DB2之CLOB物件用法

String resume=null;//這個變數是後面使用clob物件的substring方法獲取CLOB物件的內容

String empnum="000130";

int startper,starpter1,startdpt=0;//這個是標記,表示clob中從哪到哪的內容(CLOB存放txt內容)

PreparedStatement stmt1,stmt2,stmt3=null;//定義statement物件以執行sql語句

String sql1,sql2,sql3=null;//sql語句

String empno,resumefmt=null;

Clob resumelob=null;//從資料庫裡面讀取的ResultSet結果集中返回clob物件並用resumelob接收

ResultSet rs1,rs2,rs3=null;

sql1="select POSSTR(RESUME,'Personal') "+"FROM EMP_RESUME"+"WHERE EMPNO=? AND RESUME_FORMAT='ASCII ' ";

//以上內容中 POSSRT(RESUME,'Personal ')意思是查詢RESUME這個clob物件中Personal子串的首字母出現的第一個位置,有多個Personal子串則取

第一個Persona

stmt1=con.prepareStatement(sql1);

rs1=stmt1.executeQuery();

while(rs1.next())

{

      startper=rs1.getInt(1);

}//end While,因為是wher empno所以startper只會被賦予一次值

sql2="  select POSSTR(RESUME,'DEPARTMENT') "+" FROM EMP_RESUME " +"  WHERE EMPNO =? AND RESUMEFORMAT ='ascii' ";

stmt2=con.prepareStatement(sql2);

stmt2.setString(1,empnum);

rs2=stmt2.executeQuery();

while(rs2.next())

{

     startdpt=rs2.getInt(1);

}

//獲取第二個位置

startper1=startper-1;

sql3="select EMPNO,RESUME_FORMAT,"+"  SUBSTR(RESUME,1,?)||SUBSTR(RESUME,?) AS RESUME "+

"FROM EMP_RESUME"+" WHERE EMPNO=? AND RESUME_FORMAT ='ascii' ";

//這一句sql3是SUBSTR是指對RESUME物件進行拆分,拆分範圍是從resume物件的第一個位置到 ?位置,然後再與從resume的 ?位置到結束這兩個子串進行合併成為新的clob物件RESUME,這個RESUME是顯示的CLOB物件,資料庫內的clob內容不變;也就是說SUBSTR是求resume的子串的

stmt3=con.prepareStatement(sql3);

stmt3.setInt(1,startper1);

stmt3.setInt(2,startdpt);

stmt3.setString(3,empnum);

rs3=stmt3.executeQuery();

while(rs3.next())

{

     empno=rs3.getString(1);

     resumefmt=rs3.getString(2);

     resumelob=rs3.getClob(3);

     long len=resumeclob.length();

     int len1=(int)len;//前提是長度沒有那麼長

     String resumeout=resumelob.getSubString(1,len1);

}//end while