日期:2014-05-18  浏览次数:20810 次

jsp与mysql的web编程问题!
最近在学习jsp和mysql的web编程,碰到了一个问题。
现象:
        我从数据库中取得数据,根据取得结果的数据,做为条件再从数据库中去取得数据,并将取得的数据打印出来,但是没有全部显示出来,而且tomcat中也没有报错。
问题:
        不知道出现这个问题的原因,不知道该如何解决。
希望能够在此得到大家的建议和意见!

------解决方案--------------------
呵呵!!不对的,你先取出来的东西先保存到一个数组里!!再做为条件!!你再试试
------解决方案--------------------
这样不对吧.
while(...next())
{这里面的东西会执行很多次}
按你说的A表有一千条,它就会再查1千次表,然后输出和a表相同id的B表的ID,
但是你输出B表的ID时没有WHILE啊.这样可以么,我也不太清楚啊
------解决方案--------------------
为什么不用mssql啊。效率高得多。
------解决方案--------------------
select * from a,将结果保存于rs_a的ResultSet中,

int i=0;
while(rs_a.next()){
i++;
select * from b where id=rs_a.getString( "id "),将结果保存于rs_b的ResultSet中,
System.out.println( "第 "+i+ "次 ");
out.print(rs_b.getString( "id "));
System.out.println( "第 "+i+ "次 打印结束 ");
}


找到问题出在哪再说啊
------解决方案--------------------
select * from b where id=rs_a.getString( "id "),这句话明显是有问题的,如下:
select * from b where id=“ <%=rs_a.getString( "id ")%> ”
------解决方案--------------------
look
------解决方案--------------------
直接用数据库操作就行了,要是这都用嵌套,那sql真是白学了。

select distinct id from b
where exists (select 1 from a where a.id = b.id)

还有用 in 或 连接操作 都可以


你的程序只打印了一半是因为ResultSet引用rs所指向的对象不是持久在数据库中的,所以还没等你print完,对象就没有了。
------解决方案--------------------
你先用语句
select distinct id from b where exists (select 1 from a where a.id = b.id) 在数据库里查看一下到底连接会有多少条结果数据.
另外,把你的代码部分贴出来看看,是不是有使用了但没有及时关闭的ResultSet对象,因为ResultSet对象是会占用内存资源的,我以前也碰到过类似问题,后来把多余的ResultSet对象及时关闭就好了.
------解决方案--------------------
jf
------解决方案--------------------
学习

------解决方案--------------------
如果你的最终目的是在jsp页面上以主细表的形式表现,大可不必如此,看看下面的主细表在线演示:http://www.newxy.net/zh_cn/samples/sample1/demo.jsp

不用在后台写java代码。

------解决方案--------------------
select * from a,将结果保存于rs_a的ResultSet中,
while(rs_a.next()){
select * from b where id=rs_a.getString( "id "),将结果保存于rs_b的ResultSet中,
out.print(rs_b.getString( "id "));
}

强烈建议用嵌套查询:
select * from b where id in (select id from a);