一个Statement不能同时打开两个ResultSet?为了同时打开两个,可以考虑建立两个Statement?甚至两个Connection?

zijianyi 2002-02-03 01:56:53
我用resin+sql2000

我想实现一个两级菜单和csdn差不多,只不过要读数据库

Rst=Stmt.executeQuery("select A from B");
while (Rst.next())
{
Rstchild=Stmt.executeQuery("select C from D where pid="+Rst(A));
while (Rstchild.next())
{
}
}
这个提示Rstchild没有定义和初始化
于是想用两个connection

<%@ page language="java" import="java.sql.*" contentType="text/html;charset=gb2312"%>
<%
java.sql.Connection Conn;
java.sql.Connection connn;
java.sql.Statement Stmt;
java.sql.Statement Stmtt;
java.sql.ResultSet Rst;
java.sql.ResultSet Rstt;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Conn=DriverManager.getConnection("jdbc:odbc:wangzhan","zijian","zijian");
Connn=DriverManager.getConnection("jdbc:odbc:wangzhan","zijian","zijian");
Stmt=Conn.createStatement();
Stmtt=connn.createStatement();
%>

可是也不行,提示connn没有初始化,在一个connection上建两个statement我也试了也不行......

到底可不可以两个Statement?甚至两个Connection?

听说菜单还有一种就是用jsp读出数据(可是怎么读呀?能读出来直接输出了就是菜单了哦?要同时读父表和子表怎么读?????)然后用javasctipt实现菜单


...全文
205 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanchang 2002-02-03
是不是可以这样
1 定义一个Vector v
2 将Rst的内容放到v
3 关闭Rst
4 for(int i=0;i<v.size();i++) 来取得Rstchild

是不是比开两个连接要好
回复
zijianyi 2002-02-03
怎么才能不使用odbc,我用sql2000+resin2.02告诉我怎么连接,另外连两个conn也不行,我试了!
告诉我怎么连接,谢谢!!!!
回复
yanchang 2002-02-03
很遗憾,用ODBC连接是有这个问题,我用ms的驱动连接
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Conn=DriverManager.getConnection("jdbc:sqlserver://myServer:1433;user=sa;password=sa;DatabaseName=mzg");
接没问提,
我连接oracle的时候也没问题,
看来你只有在连接个Conn2了
或者不使用ODBC连接
回复
zijian1 2002-02-03
data.jsp

<%@ page language="java" import="java.sql.*" contentType="text/html;charset=gb2312"%>
<%
java.sql.Connection Conn;

java.sql.Statement Stmt1;
java.sql.Statement Stmt2;
java.sql.ResultSet Rst;
java.sql.ResultSet Rstchild;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Conn=DriverManager.getConnection("jdbc:odbc:wangzhan","zijian","zijian");
Stmt1=Conn.createStatement();
Stmt2=Conn.createStatement();
%>

a.jsp

<%@ include file="data.jsp"%>

<%@ page import="java.util.Date"contentType="text/html;charset=gb2312"%>
<%
Rst=Stmt1.executeQuery("select * from teach_subject");
while (Rst.next())
{
try{ Rstchild=Stmt2.executeQuery("select unit_name from teach_unit ");}
catch(SQLException e){
out.print(e);}
}
%>

catch到错误:

java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt
回复
zijianyi 2002-02-03
老兄试了不行呀提示:
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt
回复
zijianyi 2002-02-03
另外jdbc-odbc能不能实现这个呀?
回复
zijianyi 2002-02-03
pid=Rst(A)是什么意思?我要从A中读出他的id和name然后
那个where是不是要写成where pid="+Rst.getInt(id));?
回复
yanchang 2002-02-03
java.sql.Connection Conn;是一个
定义两个
java.sql.Statement Stmt1;
java.sql.Statement Stmt2;

Rst=Stmt1.executeQuery("select A from B");
while (Rst.next())
{
Rstchild=Stmt2.executeQuery("select C from D where pid="+Rst(A));
while (Rstchild.next())
{
}
}


回复
zijianyi 2002-02-03
可是怎么换呀,我数据库一窍不通,这个连接还是抄书的,我用resin2.02+sql2000+win2000server,能用jdbc吗?帮忙,谢谢!

一个connection,两个statement,就可以同时打开两个ResultSet我试了不行
回复
zijianyi 2002-02-03
菜单的事情已经搞定了!
回复
zhjx_10 2002-02-03
一个connection,两个statement,就可以同时打开两个ResultSet
我想是jdbc-odbc这种连接方式的问题,换jdbc吧
你做的东西越复杂,jdbc-odbc的麻烦越多
回复
zhjx_10 2002-02-03
你要使用jdbc,应该先下载一个sql server 2000的jdbc驱动,在这里搜索一下就可以找到下载地址
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告