关于使用orcle的rowset

本文介绍了使用RowSet进行数据查询,重点提及JDBC2.0中的OracleCachedRowSet,它实现了ResultSet所有方法,且在Connection关闭后数据仍有效。还给出了其下载地址,同时展示了查询数据的示例代码。

使用RowSet

RowSet是JDBC2.0中提供的接口,Oracle对该接口有相应实现,其中很有用的是oracle.jdbc.rowset.OracleCachedRowSet。 OracleCachedRowSet实现了ResultSet中的所有方法,但与ResultSet不同的是,OracleCachedRowSet中的数据在Connection关闭后仍然有效。

oracle的rowset实现在http://otn.oracle.com/software/content.html的jdbc下载里有,名称是ocrs12.zip

示例代码:


//查询数据部分代码:
import javax.sql.RowSet;
import oracle.jdbc.rowset.OracleCachedRowSet;
 Connection conn = DBUtil.getConnection(); 
PreparedStatement pst = null; 
ResultSet rs = null; 
try{
 String sql=“select emp_code, real_name from t_employee where organ_id=?”;   
pst = conn.preparedStatement(sql);   
pst.setString(1, “101”);   
rs = pst.executeQuery();   
OracleCachedRowSet ors = newOracleCachedRowSet();   
//将ResultSet中的数据封装到RowSet中   
ors.populate(rs);   
return ors; 
}finally{  
 DBUtil.close(rs, pst, conn);
}

Oracle数据库在10g第2版中引入了XMLTable()函数,它在SQL和XML之间提供了强大的接口,允许将XML数据当作关系数据来处理,通常用于从XML数据创建关系视图,虽不是ANSI SQL的一部分,但预计会包括在将来的标准中[^2]。 XMLTable函数的使用示例如下: - **遍历XML指定路径下的值并以表形式展示**:使用table和xmlsequence函数并用,可遍历出该XML下指定路径下的所有值并以表的形式展示。示例代码如下: ```sql SELECT extractvalue(value(i), '/OUNAME') F_OUNAME FROM tb_parse_xml t, table(xmlsequence(extract(xmltype(t.re_str), '/ROWSET/ROW/LIST/LISTITEM/OUNAME'))) i where t.id = 2; ``` 该代码通过`xmlsequence`函数提取XML中指定路径`/ROWSET/ROW/LIST/LISTITEM/OUNAME`下的值,再使用`table`函数将其转换为表形式,最后用`extractvalue`函数获取具体的值,并且通过`where`条件筛选出`id`为2的记录[^3]。 - **附加where条件查询**:可以在使用XMLTable函数时附加`where`条件进行数据筛选。示例代码如下: ```sql SELECT t.id, t.xml_value.getclobval(), t2."return" FROM T_XML_TEST t, XMLTABLE( XMLNAMESPACES('http://www.w3.org/2003/05/soap-envelope' as "soap", 'http://ws.apache.org/axis2' as "tns" ), '/soap:Envelope' PASSING t.xml_value COLUMNS "return" varchar2(10) PATH '/soap:Envelope/soap:Body/tns:delete/tns:record_id' ) t2 where t.id = 254; ``` 此代码中,XMLTable函数通过`XMLNAMESPACES`定义命名空间,指定路径`/soap:Envelope`,使用`PASSING`关键字传入XML数据,`COLUMNS`子句定义要提取的列及其数据类型和路径。最后通过`where`条件筛选出`id`为254的记录[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值