调用RusltSet的一些方法后丢失第一行数据

调用RusltSet的一些方法后丢失第一行数据(已经解决)

(解决方案在后面)
代码如下:

 public static Object[][] resultSetToObjectArray(ResultSet rs) {
		Object[][] data = null; 
		ResultSet rs1 = rs;//测试从数据库读过来的rs有没有问题即不对rs1操作
		try { 
			rs.last();//回到最后一行
		    int rows = rs.getRow()-1;//数组下标从0开始要减1
		    data = new Object[rows][];  //二维数组的行数
		    ResultSetMetaData md = rs.getMetaData();//获取记录集的元数据
		    int columnCount = md.getColumnCount();//列数
		    rs.first();//有人说是这里出现问题rs 第一条记录指向的是空 执行一次rs.next()才        会得到数据的第一条记录
		    //rs.first()把游标指向的数据的第一条记录,然后再while (rs.next()) 就成从第二条记录开始遍历,这样结果就漏掉了第一条数据。
		    //然而我后面用的是rs1应该没有问题的啊,结果还是少了第一条数据
		    int k = 0;
		    while(rs1.next()) {
		    	System.out.println("BLL 里的"+rs1.getString("_account"));
		    	Object[] row = new Object[columnCount];
		       for(int i=0; i<columnCount; i++) {
		    	   row[i] = rs1.getObject(i+1).toString();
		    }
		       data[k] = row;
		       k++;
		       }
		  } catch (Exception e) {
			  
		  }
		return data;
	}

问题描述请看代码注释,未解决,欢迎各位高手指点迷津!!!
运行结果
测试结果
数据库的数据

 public static Object[][] resultSetToObjectArray(ResultSet rs) {
		Object[][] data = null; 
		try { 
			rs.last();//回到最后一行
		    int rows = rs.getRow();//数组行数
		    data = new Object[rows][];  
		    ResultSetMetaData md = rs.getMetaData();//获取记录集的元数据
		    int columnCount = md.getColumnCount();//列数
		    rs.first();
		    int k = 0;
		    do {
				
				Object[] row = new Object[columnCount];
			    for(int i=0; i<columnCount; i++) {
			    	row[i] = rs.getObject(i+1).toString();
			    }
			   data[k] = row;
			   k++;
			   }while(rs.next());
		} catch (Exception e) {
			//e.printStackTrace();
			JOptionPane.showMessageDialog(null, "数据库无记录");
		  }
		return data;
	}

其实rs.fist()指的就是第一条记录,在执行rs.next()后会让指针往后移动一个导致第一条记录丢失。故循环语句不能用while而要用do while先执行再判断和移动。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值