JDBC 3.0 RowSet, 类似于windows中ADO的编程方式

王朝java/jsp·作者佚名  2006-01-10
宽屏版  字体: |||超大  

JDBC有够慢的,出到了3.0了才有个Rowset能类似于windows下ADO的概念,却还是达不到ADO.net的水平。幸亏Java里ORM这块比较争气,趁着C#的ObjectSpace跳票,可以继续耀武扬威。

Rowset对比于ResultSet,除了不用保持Connecton外,更重要特点是能够类似于ADO的编程方式,直接对Row赋值来进行Insert与Update, 而不用写SQL语句。 在windows编程中经常可见这种模式,特别是ADO.net用的好时,ORM也只能算是锦上添花....

在oracle的sample代码中,rowset02.java完整demo了RowSet的ADO模式。

简化后的代码如下:

public class RowSet02 {

public static void main (String []args)

{

try

{

OracleCachedRowSet crowset = new OracleCachedRowSet ();

crowset.setUrl (java:oracle:oci8:@);

crowset.setUsername ("hr");

crowset.setPassword ("hr");

/*Select*/

crowset.setCommand ("SELECT seatno, tdate, name, class FROM reservation");

crowset.execute ();

System.out.println ("Seat no Travel Date Name Class");

while (crowset.next ())

{

printRow (crowset);

}

crowset.setReadOnly (false);

/*Update*/

crowset.beforeFirst ();

if (crowset.absolute (2))

{

crowset.updateString (4, "Business");

crowset.updateRow ();

}

/*Insert*/

crowset.beforeFirst ();

crowset.moveToInsertRow ();

crowset.updateInt (1, 107);

crowset.updateDate (2, new Date (975915381774L));

crowset.updateString (3, "Pluto");

crowset.insertRow ();

/*Delete*/

crowset.beforeFirst ();

if (crowset.absolute (6))

{

crowset.deleteRow ();

}

crowset.acceptChanges ();

crowset.close ();

}catch (SQLException ea)

{

ea.printStackTrace ();

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有