其实我要实现的功能很简单,就是像这个网站 http://www.no5.com.cn 左边的商品分类菜单,程序分别检索大类与小类的表,并显示出来。可是程我的序只显示了大类的信息,小类的确显示不出来,请高手帮看看是怎么回事,是我的逻辑错误,还是其他原因,谢谢先!!!源码如下:
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>
<%
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=eshopDB"; String user="sa";
String password="dba";
Connection conn=DriverManager.getConnection(url,user,password);
Statement stmt =conn.createStatement();String sql="select * from ProductClass";ResultSet rs = stmt.executeQuery(sql);
String classID = null ;
%>
<table>
<!----------一级分类------------>
<% while(rs.next()) {
classID= rs.getString("ClassID");
%>
<tr>
<td width="120" colspan="2">
<a href="hello.jsp?ID=<%=rs.getString("ClassID")%>"><%=rs.getString("ClassName")%></a>
<%}%>
</td>
</tr><!----------二级分类------------>
<%
String m_sql="Select CategoryID,CategoryName,ClassID from ProductCategory where ClassID='"+classID+"'";
ResultSet m_rs = stmt.executeQuery(m_sql);
%>
<% while(m_rs.next()) { %>
<tr>
<td width="70">
<a href="hello.jsp?ID=<%=m_rs.getString("CategoryID")%>"><%=rs.getString("CategoryName")%></a>
<%if(m_rs.next()){%>
</td>
<td width="70"><a href="hello.jsp?ID=<%=m_rs.getString("CategoryID")%>"><%=m_rs.getString("CategoryName")%></a>
<%}%>
</td>
</tr>
<%}%>
<!----------------------------------------------------------------->
</table>
<%@ page import="java.sql.*" %>
<%
try{
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=eshopDB";
String user="sa";
String password="dba";
Connection conn=DriverManager.getConnection(url,user,password);
Statement stmt =conn.createStatement();
String sql="select * from ProductClass";
ResultSet rs = stmt.executeQuery(sql);
String classID = null ;
%>
<table>
<!----------一级分类------------>
<% while(rs.next())
{
classID= rs.getString(1);
%>
<tr>
<td width="120" colspan="2"><a href="hello.jsp?ID=<%=classID%>"><%=rs.getString(2)%></a></td>
</tr>
<!----------二级分类------------>
<%
String m_sql="Select CategoryID,CategoryName,ClassID from ProductCategory where ClassID='"+classID+"'";
ResultSet m_rs = stmt.executeQuery(m_sql);
while(m_rs.next())
{
%>
<tr>
<td width="70"><a href="hello.jsp?ID=<%=m_rs.getString(1)%>"><%=m_rs.getString(2)%> </a></td>
<%
if(m_rs.next())
{
%>
<td width="70"><a href="hello.jsp?ID=<%=m_rs.getString(1)%>"><%=m_rs.getString(2)%></a> </td>
<%
}
%>
</tr>
<%
}
}
}
catch(Exception e)
{
out.println(e);
}
%>
</table>写的比较乱,我大致帮你看了一下
改了以后只显示第一张表的第一条信息与第二张表的ClassID等于第一张表ClassID的信息异常信息是:java.sql.SQLException: [Microsoft][SQLServer JDBC Driver]Object has been closed.
<%@ page import="java.util.*,java.sql.*" %>
<%
String m_sql=null;
ResultSet m_rs=null;
String classID = null ;
try{
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=eshopDB";
String user="sa";
String password="dba";
Connection conn=DriverManager.getConnection(url,user,password);
%>
<table>
<!----------一级分类------------>
<%
Statement stmt =conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
String sql="select * from ProductClass";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next())
{
classID= rs.getString(1);
%>
<tr>
<td width="120" colspan="2"><a href="hello.jsp?ID=<%=classID%>"><%=classID%></a></td>
</tr>
<!----------二级分类------------>
<%
Statement stm =conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
m_sql="Select CategoryID,CategoryName,ClassID from ProductCategory where ClassID='"+classID+"'";
m_rs = stm.executeQuery(m_sql);
while(m_rs.next())
{
%>
<tr>
<td width="70"><a href="hello.jsp?ID=<%=m_rs.getString(3)%>"><%=m_rs.getString(4)%> </a></td>
<td width="70"><a href="hello.jsp?ID=<%=m_rs.getString(3)%>"><%=m_rs.getString(4)%></a> </td>
</tr>
<%
}
}
}
catch(Exception e)
{
out.println(e);
}
%>
</table>
谢谢 wsk_228(qing_feng)及所有关注此贴的兄弟
谢谢 wsk_228(qing_feng)好像可以了,我在试试哈