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

猜你喜欢

转载自blog.csdn.net/qwezhaohaihong/article/details/78675313
db2