查询结果集 上下移动游标 滚动遍历(Scrollable iteration)将指针移动到给定行编号 绝对定位 可滚动遍历 可滚动的结果集

 

CSDN论坛 > Java > Java EE

JDBC操作mysql。得到一个结果集,如何定位到这个结果集的某一行? [问题点数:40分,结帖人bobiy45785]

小小刚

Bbs1

结帖率 90.91%

我通过执行sql语句得到一个结果集 ResultSet rs;
如何定位到这个rs的某一具体行呢?

不要使用rs.next()逐行判断,而是直接定位到比如第三行,而不是第一行、第二行、第三行这样子顺序执行

需要一个高手为我解答呀~~~

 

问题点数:40分

 0 2011-08-30 21:24:54 回复次数5

只看楼主 ・ 引用 ・ 举报 ・ 楼主

阿甘1976

Bbs6

stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs.absolute(5)  //绝对定位

boolean absolute(int row)

0 2011-08-30 21:34:58

只看TA ・ 引用 ・ 举报 ・ #1 得分:15

mysql 存储过程结果集怎么处理?建立存储过程 pro_show_childLst: BEGIN DROP TEMPORARY TABLE IF EXISTS tmpLst; CREATE TEMPORARY TABLE IF NOT

小小刚

Bbs1

引用 1 楼 gl74gs48 的回复:

stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs.absolute(5)  //绝对定位

boolean absolute(int row)



绝对定位返回的是一个布尔值。我想要得到这一行后仍然可以根据这一行的列去获得值。

0 2011-08-30 21:41:40

只看TA ・ 引用 ・ 举报 ・ #2 得分:0

如何把ResultSet中的指针放到指定的位置如何把ResultSet中的指针放到指定的位置 int size=0; try{ while(rs.next()){ size+=1; } }catch(SQLException e){ System

小小刚

Bbs1

自己顶顶,不要沉了、

0 2011-08-30 22:30:55

只看TA ・ 引用 ・ 举报 ・ #3 得分:0

初学JDBC(五)-使用ResultSet结果集对数据库表内容实现查询操作上两篇博客讲了如何对数据库中的表内容进行增删改的操作,这一篇博客来说说如何实现对数据库的表内容进行读取查询操作。

杰克和仙豆

Bbs6

 boolean absolute(int row) 
          将指针移动到此 ResultSet 对象的给定行编号。 
看API的说明,已经定位在该行了,要读哪一列调用相应的get就行了

0 2011-08-30 22:33:50

只看TA ・ 引用 ・ 举报 ・ #4 得分:10

JDBC查询指定条件的数据使用select语句的条件查询,需要用到where子句。package qddx.JDBC; import java.sql.*; public class QueryById { public bbsVo QuerybbsVoById(int id){ bbsVo vo = null; Connection conn = null; Prepa

风尘中国

Bbs7

Blank Blank

首先要看数据库产品是否是支持可滚动的结果集,如果不支持则无法做到,MySQL是支持的,下面程序也进行了判断是否支持,然后具体到某一行用的API你可以到ResultSet的API上找,这里给出一个实例,直接跳转找到第五行,然后进行获取数据
运行程序需要test数据库下面有customer数据表,创建语句也贴出来

SQL code?

1

2

3

4

5

6

7

CREATE TABLE `customer` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT,

  `namevarchar(80) DEFAULT NULL,

  `age` smallint(6) DEFAULT NULL,

  PRIMARY KEY (`id`),

  UNIQUE KEY `id` (`id`)

)

 

Java code?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

 public static void main(String[] args)throws Exception{

        String driver="com.mysql.jdbc.Driver";

        String url="jdbc:mysql://localhost:3306/TEST?useUnicode=true&characterEncoding=UTF-8";

        String user="root";

        String password="root";

 

        Class.forName(driver);

        Connection conn= DriverManager.getConnection(url,user,password);

 

        DatabaseMetaData dbmd=conn.getMetaData();

        //下面判断是否支持可滚动结果集

        if(dbmd.supportsResultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE)){

            Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

                    ResultSet.CONCUR_UPDATABLE);

            ResultSet rs=stmt.executeQuery("select * from customer");

            //一下是传统的遍历方法

            while(rs.next()){

                int id=rs.getInt("id");

                int age=rs.getInt("age");

                String name=rs.getString("name");

                System.out.println("id="+id+",age="+age+",name="+name);

            }

            //传统遍历方法结束

//            rs.first();

            rs.absolute(5);   //直接跳转到第五行

 

            //以下取出第五行的数据,只有三列分别取数据

             int id=rs.getInt("id");

                int age=rs.getInt("age");

                String name=rs.getString("name");

                System.out.println("第五行输出:id="+id+",age="+age+",name="+name);

 

            //关闭数据库连接,释放资源

            rs.close();

            stmt.close();

            conn.close();

        }else{

             System.out.println("数据库不支持可滚动结果集");

        }

 

 

 

    }

 

0 2011-08-31 00:55:37

只看TA ・ 引用 ・ 举报 ・ #5 得分:15

  •  

本帖子已过去太久远了,不再提供回复功能。

https://bbs.csdn.net/topics/370161488

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值