JAVA语言中的SQL语句

使用java语言查询数据库的时候SQL语句一直报错while(reSet.next()){out.println("<tr>");out.println("<td>"+r... 使用java语言查询数据库的时候SQL语句一直报错

while(reSet.next()){
out.println("<tr>");
out.println("<td>"+reSet.getInt(1)+"</td>");
out.println("<td>"+reSet.getString(2)+"</td>");
out.println("<td>"+reSet.getString(3)+"</td>");
out.println("<td>"+reSet.getInt(4)+"</td>");
out.println("</tr>");
}
reSet是得道的查询结果,是一个4列的一个表,在执行reSet.getString(2)这一条语句的时候抛出异常
java.sql.SQLException: Column Index out of range, 2 > 1.
请问怎么解决??谢谢~
展开
 我来答
yasiolar
2013-08-13
知道答主
回答量:35
采纳率:0%
帮助的人:23万
展开全部
建议你检查下sql语句,个人认为应该是你的sql语句中只查询出一个结果,但是你却调用了ResultSet.getXXX(2)方法,导致超出边界异常
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LeenHLL
2013-08-13 · TA获得超过4085个赞
知道小有建树答主
回答量:599
采纳率:25%
帮助的人:370万
展开全部
索引越界了.

试试把getString() 和前面的getInt()中的索引, 换成具体的数据库列名, 就会明白是在哪儿越界了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a47f6080e
2013-08-13 · TA获得超过458个赞
知道小有建树答主
回答量:127
采纳率:100%
帮助的人:123万
展开全部
这个异常说明 你的数据其实只有一列 但是你一共取了四列 在你的程序运行到第二列时,就因为越界而抛出异常,后面的就没有再运行了,不然第三个 和第四个都是错的。你可以把你的取reset的sql语句发下么??
更多追问追答
追问

pstm = conn.prepareStatement("select * from text where ID limit"+((pageNow-1)*pageSize)+","+pageSize);不过有一个新的异常

追答

不要用*来取,因为你并不知道你取出来的列的顺序到底是什么,而且你还用索引来获取reset里面的值。

有两个建议:

  1. 写SQL的时候,需要取什么值,就写什么列。强烈建议不要因为偷懒而用*来代替,一来,数据量大的时候,取数据慢,而来当你使用索引取值的时候,经常会发生写不知道的错误。

  2. 取resultSet里面的值,建议使用列名来取,而不要使用索引,这样写出来的程序,可读性较高,便于他人维护。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yugi111
2013-08-13 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
既然reSet是得道的查询结果,所以你也不能确定就是4列了,所以还是去看看怎么得来的吧!
更多追问追答
追问

pstm = conn.prepareStatement("select * from text where ID limit"+((pageNow-1)*pageSize)+","+pageSize);不过有一个新的异常

追答
额,看看能不能使用limit关键字吧,也许不支持,又或者写错!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式