六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 49|回复: 0

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

[复制链接]

升级  75.55%

819

主题

819

主题

819

主题

探花

Rank: 6Rank: 6

积分
2511
 楼主| 发表于 2013-2-7 03:31:30 | 显示全部楼层 |阅读模式
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 ();
}
}


}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表