Result 游標(biāo)控制
1stmt = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY );//注意必須有參數(shù),否則r沒結(jié)果
rs = stmt.executeQuery( "select * from student" );
rs.last();
int r = rs.getRow();
System.out.println( "r=" + r );
2
rs = stmt.executeQuery( "select count(*) as sc from student" );
while ( rs.next() ) {
System.out.println( rs.getInt("sc") );
System.out.println( rs.getString("sc") ); //都可以
}
3
rs = stmt.executeQuery( "select * from student" );
while ( rs.next() ) {
i++;
}
System.out.println( "i=" + i );
----------------------------------------------------------------------------------------------------
conn.createStatement()參數(shù)介紹:
第一個(gè)參數(shù)指定 ResultSet 的類型。其選項(xiàng)有:
TYPE_FORWARD_ONLY:
ResultSet指針只能向前移動(dòng);
TYPE_SCROLL_INSENSITIVE:
ResultSet指針可以前后移動(dòng),INSENSITIVE表示不及時(shí)更新,就是如果數(shù)據(jù)庫(kù)里的數(shù)據(jù)修改過,并不ResultSet中反映出來;
TYPE_SCROLL_SENSITIVE:
ResultSet指針可以前后移動(dòng),SENSITIVE表示及時(shí)跟蹤數(shù)據(jù)庫(kù)的更新,以便更改ResultSet中的數(shù)據(jù)。
在實(shí)際開發(fā)中,我們可以利用這些參數(shù)來方便地移動(dòng)指針,比如:可以得到ResultSet的記錄數(shù)
Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet. CONCUR_READ_ONLY );
ResultSet rs = stmt.executeQuery("SELECT id, name FROM TABLE1");
rs.last(); //移動(dòng)到最后一行
int rownum = rs.getRow(); //獲得當(dāng)前行的行號(hào),即記錄的條數(shù)
rs.absolute(1); //將指針返回至第一條記錄
接著來看看resultSetConcurrency參數(shù)的意義:
CONCUR_READ_ONLY: 表示當(dāng)前ResultSet對(duì)象只讀,不能更新;
CONCUR_UPDATABLE:表示當(dāng)前ResultSet可以更新。
在實(shí)際開發(fā)中我們可以利用CONCUR_UPDATABLE參數(shù)來實(shí)時(shí)更新ResultSet中的數(shù)據(jù),更新有兩種方式:
第一種方式是更新當(dāng)前數(shù)據(jù)行的數(shù)據(jù),如:
rs.absolute(5); // 移動(dòng)rs指針至第5行數(shù)據(jù)
rs.updateString("NAME", "daniel"); // 將該行name列的值更新為“daniel”
rs.updateRow(); //更新數(shù)據(jù)源的數(shù)據(jù)
第二種方式是插入一行數(shù)據(jù),如:
rs.moveToInsertRow(); // 將指針移動(dòng)至插入行,插入行是ResultSet對(duì)象中的特殊行
rs.updateString(1, 2); // 更新插入行中第一列的值為2
rs.updateInt(2, "daniel"); // 更新第二列中的值為daniel
rs.insertRow();
rs.moveToCurrentRow(); //將指針移動(dòng)至插入之前的位置
[備注]
在默認(rèn)情況下類型為 TYPE_FORWARD_ONLY, CONCUR_READ_ONLY 并發(fā)級(jí)別。
其實(shí)這些參數(shù)名稱都對(duì)應(yīng)一個(gè)整數(shù)值:
TYPE_FORWARD_ONLY=1003
TYPE_SCROLL_INSENSITIVE=1004
TYPE_SCROLL_SENSITIVE=1005
CONCUR_READ_ONLY=1007
CONCUR_UPDATABLE=1008
關(guān)于Interface ResultSet 更多方法,請(qǐng)參考http://java.sun.com/j2se/1.5/docs/api/java/sql/ResultSet.html
posted on 2007-10-25 14:10 王波 閱讀(508) 評(píng)論(0) 編輯 收藏