ResultSet rs=conn.execute(sql1);
while(rs.next()){
//这里显示留言内容
//如果留言者是注册用户,那么我这里要显示注册信息
//需要再打开注册用户表,这里应该怎么打开???
}
31 个解决方案
#1
String sql1="****";
ResultSet rs=conn.execute(sql1);
while(rs.next()){
//这里显示留言内容
String sql2="****";
ResultSet rsUser=conn.execute(sql2);
while(rsUser.next()){
//这里显示注册信息
}
}
ResultSet rs=conn.execute(sql1);
while(rs.next()){
//这里显示留言内容
String sql2="****";
ResultSet rsUser=conn.execute(sql2);
while(rsUser.next()){
//这里显示注册信息
}
}
#2
String sql1="****";//打开留言信息表
ResultSet rs=conn.executeQuery(sql1);
while(rs.next()){
//这里显示留言内容
String sql1="select * from 注册用户表 where user_id="+rs.getInt("father_id")+"";
ResultSet rs1=stm1.executQuery(sql1);
if(rs1.next())
out.println(rs1.getString("user_name"));
else
out.println("xxxx");
}
ResultSet rs=conn.executeQuery(sql1);
while(rs.next()){
//这里显示留言内容
String sql1="select * from 注册用户表 where user_id="+rs.getInt("father_id")+"";
ResultSet rs1=stm1.executQuery(sql1);
if(rs1.next())
out.println(rs1.getString("user_name"));
else
out.println("xxxx");
}
#3
你们的方法尝试过吗/??
外层用了while(rs.next())循环~
里面再定义String 和ResultSet,循环起来是不是会重复声明???
外层用了while(rs.next())循环~
里面再定义String 和ResultSet,循环起来是不是会重复声明???
#4
哎,那就可以在外面声明嘛。。
重写重写:
String strSQL="****";
ResultSet rs=conn.execute(sql1);
ResultSet rsUser=null;
while(rs.next()){
//这里显示留言内容
strSQL="****";
rsUser=conn.execute(strSQL);
while(rsUser.next()){
//这里显示注册信息
}
}
重写重写:
String strSQL="****";
ResultSet rs=conn.execute(sql1);
ResultSet rsUser=null;
while(rs.next()){
//这里显示留言内容
strSQL="****";
rsUser=conn.execute(strSQL);
while(rsUser.next()){
//这里显示注册信息
}
}
#5
出错了 javax.servlet.ServletException: After end of result set
#6
原来没注意看,Connection对象可以直接excute SQL语句么??
我好像没见过这样的用法。。
改一下你的代码试试:
String strSQL="****";
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stmt.executeQuery(sql1);
ResultSet rsUser=null;
while(rs.next()){
//这里显示留言内容
strSQL="****";
rsUser=stmt.executeQuery(strSQL);
while(rsUser.next()){
//这里显示注册信息
}
}
我好像没见过这样的用法。。
改一下你的代码试试:
String strSQL="****";
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stmt.executeQuery(sql1);
ResultSet rsUser=null;
while(rs.next()){
//这里显示留言内容
strSQL="****";
rsUser=stmt.executeQuery(strSQL);
while(rsUser.next()){
//这里显示注册信息
}
}
#7
哎,写错了写错了,重发:
String strSQL="****";
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stmt.executeQuery(strSQL);
ResultSet rsUser=null;
while(rs.next()){
//这里显示留言内容
strSQL="****";
rsUser=stmt.executeQuery(strSQL);
while(rsUser.next()){
//这里显示注册信息
}
}
String strSQL="****";
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stmt.executeQuery(strSQL);
ResultSet rsUser=null;
while(rs.next()){
//这里显示留言内容
strSQL="****";
rsUser=stmt.executeQuery(strSQL);
while(rsUser.next()){
//这里显示注册信息
}
}
#8
这样会导致重复的statement,或者用一句sql(外连接 or 内连接)
或者先将第一个sql的resultset写到一个数组里,然后遍历这个数组来查第二个sql
然后输出。
或者先将第一个sql的resultset写到一个数组里,然后遍历这个数组来查第二个sql
然后输出。
#9
简单一点的话为每个ResultSet 定义一个Statement
#10
劫分&捧场
#11
但是并不是任何时候都支持多Statement!!!
有时候会出现Satement占线的错误!
有时候会出现Satement占线的错误!
#12
to:vick(瞌睡虫)
你说:这样会导致重复的statement。。
我不是太明白,据我的理解,我只定义了一个statement,只是它执行了多条sql语句,返回多个dataset而已。。
另:jdbc 3.0以上支持一个statement打开多个dataset。。如果是3.0以下的版本,那就只能按照vick(瞌睡虫)所说的方法了,或者声明两个statement。。
你说:这样会导致重复的statement。。
我不是太明白,据我的理解,我只定义了一个statement,只是它执行了多条sql语句,返回多个dataset而已。。
另:jdbc 3.0以上支持一个statement打开多个dataset。。如果是3.0以下的版本,那就只能按照vick(瞌睡虫)所说的方法了,或者声明两个statement。。
#13
还是把两个表联起来查询效率高些,循环里重复生成的事件会严重降低数据库执行的效率
#14
恩,我也赞同:)
具体怎么联系两个表?
具体怎么联系两个表?
#15
声明:我的conn.executeQuery(sql)中的conn是连接数据库BEAN的ID
#16
关联好象会出现问题,因为不是每个留言者都是注册用户啊
#17
下面是我的“拍卖系统”中的一部分,可以试试!
<jsp:useBean id="chip_in" scope="page" class="bb.InitDB"/>
<%
//查询是否有到期限的拍卖商品
int n=0;
int a[]=new int[50];
String sql="select * from storage";
ResultSet rs;
rs=chip_in.executeQuery(sql);
while(rs.next())
{
String end
int id=rs.getInt("ID");_time=rs.getString("endtime");
ResultSet rs2;
String sql2="select * from chip_in where chip_id="+id+" and chip_time='"+end_time+"'";
sql2=sql2+" order by chip_price DESC";
rs2=chip_in.executeQuery(sql2);
if(rs2.next())
{
int chip_id=rs2.getInt("chip_id");
float chip_price=rs2.getFloat("chip_price");
String chip_name=rs2.getString("chip_name");
String username=rs2.getString("username");
String success="成交";
%>
<tr>
<td width="85"><%=chip_id%></td>
<td width="91"><%=chip_name%></td>
<td width="93"><%=username%></td>
<td width="103"><%=chip_price%></td>
<td width="100"><b><a href="chip.jsp?operation=<%=chip_id%>"><%=success%></a></b></td>
</tr>
<%
}
}
%>
<jsp:useBean id="chip_in" scope="page" class="bb.InitDB"/>
<%
//查询是否有到期限的拍卖商品
int n=0;
int a[]=new int[50];
String sql="select * from storage";
ResultSet rs;
rs=chip_in.executeQuery(sql);
while(rs.next())
{
String end
int id=rs.getInt("ID");_time=rs.getString("endtime");
ResultSet rs2;
String sql2="select * from chip_in where chip_id="+id+" and chip_time='"+end_time+"'";
sql2=sql2+" order by chip_price DESC";
rs2=chip_in.executeQuery(sql2);
if(rs2.next())
{
int chip_id=rs2.getInt("chip_id");
float chip_price=rs2.getFloat("chip_price");
String chip_name=rs2.getString("chip_name");
String username=rs2.getString("username");
String success="成交";
%>
<tr>
<td width="85"><%=chip_id%></td>
<td width="91"><%=chip_name%></td>
<td width="93"><%=username%></td>
<td width="103"><%=chip_price%></td>
<td width="100"><b><a href="chip.jsp?operation=<%=chip_id%>"><%=success%></a></b></td>
</tr>
<%
}
}
%>
#18
String end
gisbeibei(柏林) 这个是什么意思?
gisbeibei(柏林) 这个是什么意思?
#19
sql语句写成连结查询,一次查询返回所有结果
#20
怎么连接?如果他不是注册用户,在表里没有记录的~
#21
柏林,你的方法可以吗?
我这里怎么不行啊
javax.servlet.ServletException: After end of result set
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:471)
at org.apache.jsp.tt$jsp._jspService(tt$jsp.java:131)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
我这里怎么不行啊
javax.servlet.ServletException: After end of result set
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:471)
at org.apache.jsp.tt$jsp._jspService(tt$jsp.java:131)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
#22
我顶一下,这个问题没有人回答了吗?
#23
<%
String sql="select * from lybook";
ResultSet rs=conn.executeQuery(sql);
String sql1;
ResultSet rss;
while(rs.next())
{
out.println(rs.getString(1));
//sql1="select * from users where id=1";
//rss=conn.executeQuery(sql1);
//if(rss.next()){
//out.println(rss.getString(2));
//}
}
%>
为什么去掉注释后,外层就不循环了呢?
String sql="select * from lybook";
ResultSet rs=conn.executeQuery(sql);
String sql1;
ResultSet rss;
while(rs.next())
{
out.println(rs.getString(1));
//sql1="select * from users where id=1";
//rss=conn.executeQuery(sql1);
//if(rss.next()){
//out.println(rss.getString(2));
//}
}
%>
为什么去掉注释后,外层就不循环了呢?
#24
没人会吗?:(
#25
1--关于不是注册用户,在表里没有用户纪录的问题,可以使用外部连接的语句来实现,以oracle为例:
select tbl_lybook.liuyan, tbl_lybook.userid, tbl_user.userinfo from tbl_lybook, tbl_user where tbl_lybook.userid=tbl_user.userid(+)
这样,如果tbl_user表中没有该用户的资料的话,tbl_user.userinfo会以空值来填充。。
2--关于去掉注释外层就不循环的问题,我觉得楼主可以去看看你的bean中executeQuery()方法返回的dataset。。如果返回的dataset变量是声明为类变量的话,我觉得对于楼主这样的循环交叉调用会有问题,一定要声明为方法变量。。
以上意见楼主可以参考试验一下。。
select tbl_lybook.liuyan, tbl_lybook.userid, tbl_user.userinfo from tbl_lybook, tbl_user where tbl_lybook.userid=tbl_user.userid(+)
这样,如果tbl_user表中没有该用户的资料的话,tbl_user.userinfo会以空值来填充。。
2--关于去掉注释外层就不循环的问题,我觉得楼主可以去看看你的bean中executeQuery()方法返回的dataset。。如果返回的dataset变量是声明为类变量的话,我觉得对于楼主这样的循环交叉调用会有问题,一定要声明为方法变量。。
以上意见楼主可以参考试验一下。。
#26
我修改了2
将executeQuery()方法返回的变量定义成该方法的~
结果一样~
将executeQuery()方法返回的变量定义成该方法的~
结果一样~
#27
重启了你的应用服务器没??
#28
还是不行啊:(
是不是就是记录集的问题?
是不是就是记录集的问题?
#29
那也有可能你的jdbc版本太低,不支持一个statement打开多个dataset,你再把statement变量也声明成方法变量试试。。
#30
版本太低,不会哦
我并列打开就可以的~~
我并列打开就可以的~~
#31
ding
#1
String sql1="****";
ResultSet rs=conn.execute(sql1);
while(rs.next()){
//这里显示留言内容
String sql2="****";
ResultSet rsUser=conn.execute(sql2);
while(rsUser.next()){
//这里显示注册信息
}
}
ResultSet rs=conn.execute(sql1);
while(rs.next()){
//这里显示留言内容
String sql2="****";
ResultSet rsUser=conn.execute(sql2);
while(rsUser.next()){
//这里显示注册信息
}
}
#2
String sql1="****";//打开留言信息表
ResultSet rs=conn.executeQuery(sql1);
while(rs.next()){
//这里显示留言内容
String sql1="select * from 注册用户表 where user_id="+rs.getInt("father_id")+"";
ResultSet rs1=stm1.executQuery(sql1);
if(rs1.next())
out.println(rs1.getString("user_name"));
else
out.println("xxxx");
}
ResultSet rs=conn.executeQuery(sql1);
while(rs.next()){
//这里显示留言内容
String sql1="select * from 注册用户表 where user_id="+rs.getInt("father_id")+"";
ResultSet rs1=stm1.executQuery(sql1);
if(rs1.next())
out.println(rs1.getString("user_name"));
else
out.println("xxxx");
}
#3
你们的方法尝试过吗/??
外层用了while(rs.next())循环~
里面再定义String 和ResultSet,循环起来是不是会重复声明???
外层用了while(rs.next())循环~
里面再定义String 和ResultSet,循环起来是不是会重复声明???
#4
哎,那就可以在外面声明嘛。。
重写重写:
String strSQL="****";
ResultSet rs=conn.execute(sql1);
ResultSet rsUser=null;
while(rs.next()){
//这里显示留言内容
strSQL="****";
rsUser=conn.execute(strSQL);
while(rsUser.next()){
//这里显示注册信息
}
}
重写重写:
String strSQL="****";
ResultSet rs=conn.execute(sql1);
ResultSet rsUser=null;
while(rs.next()){
//这里显示留言内容
strSQL="****";
rsUser=conn.execute(strSQL);
while(rsUser.next()){
//这里显示注册信息
}
}
#5
出错了 javax.servlet.ServletException: After end of result set
#6
原来没注意看,Connection对象可以直接excute SQL语句么??
我好像没见过这样的用法。。
改一下你的代码试试:
String strSQL="****";
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stmt.executeQuery(sql1);
ResultSet rsUser=null;
while(rs.next()){
//这里显示留言内容
strSQL="****";
rsUser=stmt.executeQuery(strSQL);
while(rsUser.next()){
//这里显示注册信息
}
}
我好像没见过这样的用法。。
改一下你的代码试试:
String strSQL="****";
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stmt.executeQuery(sql1);
ResultSet rsUser=null;
while(rs.next()){
//这里显示留言内容
strSQL="****";
rsUser=stmt.executeQuery(strSQL);
while(rsUser.next()){
//这里显示注册信息
}
}
#7
哎,写错了写错了,重发:
String strSQL="****";
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stmt.executeQuery(strSQL);
ResultSet rsUser=null;
while(rs.next()){
//这里显示留言内容
strSQL="****";
rsUser=stmt.executeQuery(strSQL);
while(rsUser.next()){
//这里显示注册信息
}
}
String strSQL="****";
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stmt.executeQuery(strSQL);
ResultSet rsUser=null;
while(rs.next()){
//这里显示留言内容
strSQL="****";
rsUser=stmt.executeQuery(strSQL);
while(rsUser.next()){
//这里显示注册信息
}
}
#8
这样会导致重复的statement,或者用一句sql(外连接 or 内连接)
或者先将第一个sql的resultset写到一个数组里,然后遍历这个数组来查第二个sql
然后输出。
或者先将第一个sql的resultset写到一个数组里,然后遍历这个数组来查第二个sql
然后输出。
#9
简单一点的话为每个ResultSet 定义一个Statement
#10
劫分&捧场
#11
但是并不是任何时候都支持多Statement!!!
有时候会出现Satement占线的错误!
有时候会出现Satement占线的错误!
#12
to:vick(瞌睡虫)
你说:这样会导致重复的statement。。
我不是太明白,据我的理解,我只定义了一个statement,只是它执行了多条sql语句,返回多个dataset而已。。
另:jdbc 3.0以上支持一个statement打开多个dataset。。如果是3.0以下的版本,那就只能按照vick(瞌睡虫)所说的方法了,或者声明两个statement。。
你说:这样会导致重复的statement。。
我不是太明白,据我的理解,我只定义了一个statement,只是它执行了多条sql语句,返回多个dataset而已。。
另:jdbc 3.0以上支持一个statement打开多个dataset。。如果是3.0以下的版本,那就只能按照vick(瞌睡虫)所说的方法了,或者声明两个statement。。
#13
还是把两个表联起来查询效率高些,循环里重复生成的事件会严重降低数据库执行的效率
#14
恩,我也赞同:)
具体怎么联系两个表?
具体怎么联系两个表?
#15
声明:我的conn.executeQuery(sql)中的conn是连接数据库BEAN的ID
#16
关联好象会出现问题,因为不是每个留言者都是注册用户啊
#17
下面是我的“拍卖系统”中的一部分,可以试试!
<jsp:useBean id="chip_in" scope="page" class="bb.InitDB"/>
<%
//查询是否有到期限的拍卖商品
int n=0;
int a[]=new int[50];
String sql="select * from storage";
ResultSet rs;
rs=chip_in.executeQuery(sql);
while(rs.next())
{
String end
int id=rs.getInt("ID");_time=rs.getString("endtime");
ResultSet rs2;
String sql2="select * from chip_in where chip_id="+id+" and chip_time='"+end_time+"'";
sql2=sql2+" order by chip_price DESC";
rs2=chip_in.executeQuery(sql2);
if(rs2.next())
{
int chip_id=rs2.getInt("chip_id");
float chip_price=rs2.getFloat("chip_price");
String chip_name=rs2.getString("chip_name");
String username=rs2.getString("username");
String success="成交";
%>
<tr>
<td width="85"><%=chip_id%></td>
<td width="91"><%=chip_name%></td>
<td width="93"><%=username%></td>
<td width="103"><%=chip_price%></td>
<td width="100"><b><a href="chip.jsp?operation=<%=chip_id%>"><%=success%></a></b></td>
</tr>
<%
}
}
%>
<jsp:useBean id="chip_in" scope="page" class="bb.InitDB"/>
<%
//查询是否有到期限的拍卖商品
int n=0;
int a[]=new int[50];
String sql="select * from storage";
ResultSet rs;
rs=chip_in.executeQuery(sql);
while(rs.next())
{
String end
int id=rs.getInt("ID");_time=rs.getString("endtime");
ResultSet rs2;
String sql2="select * from chip_in where chip_id="+id+" and chip_time='"+end_time+"'";
sql2=sql2+" order by chip_price DESC";
rs2=chip_in.executeQuery(sql2);
if(rs2.next())
{
int chip_id=rs2.getInt("chip_id");
float chip_price=rs2.getFloat("chip_price");
String chip_name=rs2.getString("chip_name");
String username=rs2.getString("username");
String success="成交";
%>
<tr>
<td width="85"><%=chip_id%></td>
<td width="91"><%=chip_name%></td>
<td width="93"><%=username%></td>
<td width="103"><%=chip_price%></td>
<td width="100"><b><a href="chip.jsp?operation=<%=chip_id%>"><%=success%></a></b></td>
</tr>
<%
}
}
%>
#18
String end
gisbeibei(柏林) 这个是什么意思?
gisbeibei(柏林) 这个是什么意思?
#19
sql语句写成连结查询,一次查询返回所有结果
#20
怎么连接?如果他不是注册用户,在表里没有记录的~
#21
柏林,你的方法可以吗?
我这里怎么不行啊
javax.servlet.ServletException: After end of result set
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:471)
at org.apache.jsp.tt$jsp._jspService(tt$jsp.java:131)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
我这里怎么不行啊
javax.servlet.ServletException: After end of result set
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:471)
at org.apache.jsp.tt$jsp._jspService(tt$jsp.java:131)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
#22
我顶一下,这个问题没有人回答了吗?
#23
<%
String sql="select * from lybook";
ResultSet rs=conn.executeQuery(sql);
String sql1;
ResultSet rss;
while(rs.next())
{
out.println(rs.getString(1));
//sql1="select * from users where id=1";
//rss=conn.executeQuery(sql1);
//if(rss.next()){
//out.println(rss.getString(2));
//}
}
%>
为什么去掉注释后,外层就不循环了呢?
String sql="select * from lybook";
ResultSet rs=conn.executeQuery(sql);
String sql1;
ResultSet rss;
while(rs.next())
{
out.println(rs.getString(1));
//sql1="select * from users where id=1";
//rss=conn.executeQuery(sql1);
//if(rss.next()){
//out.println(rss.getString(2));
//}
}
%>
为什么去掉注释后,外层就不循环了呢?
#24
没人会吗?:(
#25
1--关于不是注册用户,在表里没有用户纪录的问题,可以使用外部连接的语句来实现,以oracle为例:
select tbl_lybook.liuyan, tbl_lybook.userid, tbl_user.userinfo from tbl_lybook, tbl_user where tbl_lybook.userid=tbl_user.userid(+)
这样,如果tbl_user表中没有该用户的资料的话,tbl_user.userinfo会以空值来填充。。
2--关于去掉注释外层就不循环的问题,我觉得楼主可以去看看你的bean中executeQuery()方法返回的dataset。。如果返回的dataset变量是声明为类变量的话,我觉得对于楼主这样的循环交叉调用会有问题,一定要声明为方法变量。。
以上意见楼主可以参考试验一下。。
select tbl_lybook.liuyan, tbl_lybook.userid, tbl_user.userinfo from tbl_lybook, tbl_user where tbl_lybook.userid=tbl_user.userid(+)
这样,如果tbl_user表中没有该用户的资料的话,tbl_user.userinfo会以空值来填充。。
2--关于去掉注释外层就不循环的问题,我觉得楼主可以去看看你的bean中executeQuery()方法返回的dataset。。如果返回的dataset变量是声明为类变量的话,我觉得对于楼主这样的循环交叉调用会有问题,一定要声明为方法变量。。
以上意见楼主可以参考试验一下。。
#26
我修改了2
将executeQuery()方法返回的变量定义成该方法的~
结果一样~
将executeQuery()方法返回的变量定义成该方法的~
结果一样~
#27
重启了你的应用服务器没??
#28
还是不行啊:(
是不是就是记录集的问题?
是不是就是记录集的问题?
#29
那也有可能你的jdbc版本太低,不支持一个statement打开多个dataset,你再把statement变量也声明成方法变量试试。。
#30
版本太低,不会哦
我并列打开就可以的~~
我并列打开就可以的~~
#31
ding