JSP问题,数据库查询到的ResultSet中的内容为什么不能循环输出?

从数据库中查询人员信息,得到ResultSet结果集,

<% //检索此 ResultSet 对象的列的编号、类型和属性
ResultSetMetaData rsmd=rs.getMetaData();
//得到当前行ResultSet对象的列数
int colCount =rsmd.getColumnCount();
%>
<h3>colCount=<%=colCount%></h3> <!--在这里还能输出列数的值-->

但后面却不能循环输出结果,表格中无内容,请朋友给看下是哪里的问题?

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%request.setCharacterEncoding("GBK"); %>
<% //因为setAttribute()接收值时是Object型,所以这里要强转
String name=(String)session.getAttribute("uname");
%>
<center>
<h1>登录成功!</h1>
<h2>欢迎<font color="blue"><%=name%></font>的光临!</h2>
<h3>人员管理</h3>
<%!
public static final String DRIVER="com.mysql.jdbc.Driver";
public static final String URL="jdbc:mysql://localhost:3306/mldn";
%>
<%
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
%>
<%
try{
Class.forName(DRIVER);
conn=DriverManager.getConnection(URL,"root","java");
String sql="SELECT * FROM user2";
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
%>
<% //检索此 ResultSet 对象的列的编号、类型和属性
ResultSetMetaData rsmd=rs.getMetaData();
//得到当前行ResultSet对象的列数
int colCount =rsmd.getColumnCount();
%>
<h3>colCount=<%=colCount%></h3> <!--在这里能输出列数的值-->
<table border="1">
<%
while(rs.next()){
%>
<tr>
<%
for(int i=0;i<colCount-1;i++){
String rs_1=rs.getString(i);
%>
<td><%=rs_1%></td>
<%
}
%>
</tr>
<%
}
}catch(Exception e){
e.printStackTrace();
}finally{
rs.close();
pstmt.close();
conn.close();
}
%>
</table>
</center>
<h3><a href="ZhuXiao.jsp">注销登录</a>
</body>
</html>

int colCount =rsmd.getColumnCount();

可能原因:获取记录集行数时移动ResultSet到最后一行,导致下次取时记录集为空。

试试:在while(rs.next())之前加上:

rs.beforeFirst();
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-16
不建议使用这样使用循环去取数据,一般使用对象或者集合取数据,而且i应该是从1开始,而不是从0开始
第2个回答  2014-12-16
这个问题可以先看看ResultSet 返回的记录有多少行,也许压根就没搜索到数据
相似回答