{ResultSet转JSON}Java在rs.next()遍历时报错:sql.SQLException:Column Index out of range

在Java中使用rs.next()遍历结果集时遇到`java.sql.SQLException: Column Index out of range, 0 < 1.`错误。原因是调用rs.getObject(i)时,下标从0开始而非1。解决方案是将下标从1开始,并确保不超过列的数量。" 112482471,10544431,内部推扫高光谱显微镜光学设计与医学应用,"['光学设计', '高光谱成像', '医学应用', '显微技术', '生物医学']

Java在rs.next()遍历时报错:java.sql.SQLException:Column Index out of range, 0 < 1.

问题描述:Java在rs.next()遍历中,遇报错:java.sql.SQLException:Column Index out of range, 0 < 1.

相关代码如下:

/**
	 * 将ResultSet格式的结果集转换成jsonArray数组
	 */
ResultSetMetaData md=rs.getMetaData();
		int num =md.getColumnCount();
		JSONArray array=new JSONArray();
		while(rs.next()) {
			JSONObject mapOfColValues=new JSONObject();
			//for(int i=0;i<num;i++) {	//这是原来的错误代码,遇到此问题
			for(int i=1;i<=num;i++){	//这是修改过后的代码,解决此问题
				mapOfColValues.put(md.getColumnName(i), rs.getObject(i));
			}
			array.add(mapOfColValues);
		}

出错原因:在rs.next()遍历中,rs.getObject(i)获取列值时,下标是从“1”开始,而这里是从“0”开始,导致出错。ResultSetMetaData 中的getColumnName()同理。

解决办法:将取值改为从“1”开始,相应的要取到列数的最后一列,即(for(int i=1;i<=num;i++){...})。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值