2013年3月22日 星期五

Java 連接MySQL (四) ResultSet游標控制

參自: 語言技術: Java Gossip (二) <<<超連結

使用無參數的createStatement(),prepareStatement()其執行SQL後所得之ResultSet物件,只能透過next()方法逐筆查詢(沒參數預設就是第一個)。

現在我們指定resultSetType,參數有ResultSet.TYPE_FORWARD_ONLY,
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.TYPE_SCROLL_SENSITIVE。

SENSITIVE與否差異在於能否取得ResultSet改變值後的資料。

另外必須指定resultSetConcurrency,參數有ResultSet.CONCUR_READ_ONLY與ResultSet.CONCUR_UPDATABLE。

不給參數情況,預設為 ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE。

範例
Statement st=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                                              ResultSet.CONCUR_READ_ONLY);
ResultSet rs=st.executeQuery(SELETE * FROM FriendList);
rs.afterLast();     //最後一筆的下一筆
while(rs.previous()){
     System.out.print(rs.getString("name")+"\t");
     System.out.print(rs.getString("age")+"\t");
     System.out.println(rs.getString("email")+"\t");
}
st.close();
con.close();

其他用法
rs.absolute(5);    //移動到第五筆資料
rs.absolute(10);  // ...............十............
rs.absolute(-5);   //倒數第五筆

rs.relative(5);    //若原是第25筆資料,則表示第30筆
rs.relative(-5);   //若原是第25筆資料,則表示第20筆

rs.beforeFirst();  //移動到第一筆資料之前
rs.first();             //移動到第一筆資料
rs.last();              //移動到最後一筆資料


沒有留言:

張貼留言