以前用.NET实现起来很简单的东西,可是用java就是搞不出来,在给100分!真心请教,顶者有分!!!

xidu007 2006-02-28 02:53:29

其实我要实现的功能很简单,就是像这个网站 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>



...全文
283 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wsk_228 2006-02-28
<%@ page contentType="text/html; charset=gb2312" %>
<%@ 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>

写的比较乱,我大致帮你看了一下
回复
panzi667 2006-02-28
有数据么?
回复
mingxuan3000 2006-02-28
逻辑没问题
回复
xidu007 2006-02-28

谢谢 wsk_228(qing_feng)

好像可以了,我在试试哈
回复
xidu007 2006-02-28


还是不行,急死我了
回复
xidu007 2006-02-28

谢谢 wsk_228(qing_feng)及所有关注此贴的兄弟
回复
wsk_228 2006-02-28
让我再来看一次,哈哈,不一定帮的了你,祝你好远。。。。

<%@ page contentType="text/html; charset=gb2312" errorPage="" %>
<%@ 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>
回复
控制循环有误!在一级分类中应该包含二级分类(里存循环),当然需要判断二级分类中的元素是属于一级分类中的那一个项。按照这个思路,你再整理下吧。
回复
wzd268 2006-02-28
学习 UP
回复
xidu007 2006-02-28
沉得好快呀
回复
infowain 2006-02-28
关注
回复
muyi666 2006-02-28
学习中
回复
xidu007 2006-02-28

改了以后只显示第一张表的第一条信息与第二张表的ClassID等于第一张表ClassID的信息

异常信息是:

java.sql.SQLException: [Microsoft][SQLServer JDBC Driver]Object has been closed.
回复
xidu007 2006-02-28
我先试
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2006-02-28 02:53
社区公告
暂无公告