java范例

java

Result 游标控制

1
            stmt = conn.createStatement(
                ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_READ_ONLY );//注意必须有参数,否则r没结果
            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()参数介绍:


第一个参数指定 ResultSet 的类型。其选项有:
    TYPE_FORWARD_ONLY:
    ResultSet指针只能向前移动;
    TYPE_SCROLL_INSENSITIVE:
    ResultSet指针可以前后移动,INSENSITIVE表示不及时更新,就是如果数据库里的数据修改过,并不
ResultSet中反映出来;
    TYPE_SCROLL_SENSITIVE:
    ResultSet指针可以前后移动,SENSITIVE表示及时跟踪数据库的更新,以便更改ResultSet中的数据。

    在实际开发中,我们可以利用这些参数来方便地移动指针,比如:可以得到ResultSet的记录数
        Statement stmt = con.createStatement(
            ResultSet.TYPE_SCROLL_INSENSITIVE,
            ResultSet. CONCUR_READ_ONLY );
        ResultSet rs = stmt.executeQuery("SELECT id, name FROM TABLE1");
         rs.last();                          //移动到最后一行
         int rownum = rs.getRow(); //获得当前行的行号,即记录的条数
         rs.absolute(1);                 //将指针返回至第一条记录


接着来看看resultSetConcurrency参数的意义:
    CONCUR_READ_ONLY: 表示当前ResultSet对象只读,不能更新;
    CONCUR_UPDATABLE:表示当前ResultSet可以更新。

    在实际开发中我们可以利用CONCUR_UPDATABLE参数来实时更新ResultSet中的数据,更新有两种方式:
    第一种方式是更新当前数据行的数据,如:
         rs.absolute(5);                               // 移动rs指针至第5行数据
         rs.updateString("NAME", "daniel"); // 将该行name列的值更新为“daniel”
         rs.updateRow();    //更新数据源的数据
    第二种方式是插入一行数据,如:
         rs.moveToInsertRow();       // 将指针移动至插入行,插入行是ResultSet对象中的特殊行
         rs.updateString(1, 2);         // 更新插入行中第一列的值为2
         rs.updateInt(2, "daniel");     // 更新第二列中的值为daniel
         rs.insertRow();
         rs.moveToCurrentRow();     //将指针移动至插入之前的位置


[备注]
在默认情况下类型为 TYPE_FORWARD_ONLY, CONCUR_READ_ONLY 并发级别。

其实这些参数名称都对应一个整数值:
TYPE_FORWARD_ONLY=1003
TYPE_SCROLL_INSENSITIVE=1004
TYPE_SCROLL_SENSITIVE=1005

CONCUR_READ_ONLY=1007
CONCUR_UPDATABLE=1008



关于Interface ResultSet 更多方法,请参考http://java.sun.com/j2se/1.5/docs/api/java/sql/ResultSet.html

posted on 2007-10-25 14:10 王波 阅读(501) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: