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 ();
}
}
}
闽公网安备 35060202000074号