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 ();
}
}
}
新聞熱點
疑難解答