100分求解 为什么只是显示数据库中的第一条记录啊??

时间:2021-09-21 21:44:41
我是查询两个表里面的记录,先要查出一个表的字段,另一个表在根据这个字段去查,请高手解答,急!
代码如下,请帮忙找出错误:
//建立连接准备
Connection con;
Statement sql;
ResultSet rs,rs1;
int param,num;
String param2;
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   }
catch(ClassNotFoundException e) {}
try{con=DriverManager.getConnection("jdbc:odbc:student","","");
     sql=con.createStatement();
     rs=sql.executeQuery("select * from student_credit_record order by student_id");
 while(rs.next())
 { 
    param=rs.getInt("student_id");
param2=rs.getString(2);
String student_sex=rs.getString(3);
int credit_degree=rs.getInt("credit_degree");

    out.print("<tr>");
out.print("<td><font color=#990033><a href=stu_info.jsp?id="+param+">"+param2+"</a></font></td>");
out.print("<td>"+param+"</td>");
out.print("<td>"+student_sex+"</td>");
out.print("<td><font color=#990033>"+credit_degree+"</font></td>");
String sqlstring="select count(*) from bad_record where student_id="+param;
    rs1=sql.executeQuery(sqlstring);
while(rs1.next())
{  //将游标移动到第一条记录,这里总共也才一条记录
num=rs1.getInt(1);
out.print("<td>"+num+"</td>");
        }
//out.print("<td>"+"2"+"</td>");
out.print("<td><a href=stu_modify.jsp?id="+param+"&nid="+param2+">"+"修改"+"</a>"+"|"+"<a href=stu_del.jsp?id="+param+"&nid="+param2+">"+"删除"+"</a></td>");
    out.print("</tr>");

  }
 con.close();

 catch(SQLException e6) {}

8 个解决方案

#1


看来是没有高手,都在这边吹

#2


没看明白你想问什么,很是奇怪。你想实现什么样的,现在你的程序运行出来是什么样的,还有就是你数据库中的数据是什么,都没说,没法帮你看。

#3


看你驱动的版本了  早点的不能只定义一个Statement sql; 这样只能取出最后的ResultSet定义两个Statement sql,sql2;再测试一下

#4


改一下sql,可以同时在一条sql中实现

#5


我是说我先读一个表A,另外一个表的数据要根据这个表A读出来的字段才能读取数据,也就是while里面还有while,数据库里有很多条记录,但是只是显示第一条,怎么不知道呢

#6


改成一句,去掉大循环里的小循环.
rs=sql.executeQuery("select a.* b.count(*) from student_credit_record a, bad_record b where b.student_id= by a.student_id order a.student_id");

#7


joyaga(joyaga) 
 

谢谢你啊,很多人都没看出来,说了一大堆都不知道,真是太感谢了,我能够加你吗,我QQ 2988976
希望向你学习

#8


String sqlstring="select count(*) from bad_record where student_id="+param;

这个语句只能读出表bad_record 中的student_id="+param的总数...返回一个记录...

如果要全部读出就写成:
String sqlstring="select * from bad_record where student_id="+param;

#1


看来是没有高手,都在这边吹

#2


没看明白你想问什么,很是奇怪。你想实现什么样的,现在你的程序运行出来是什么样的,还有就是你数据库中的数据是什么,都没说,没法帮你看。

#3


看你驱动的版本了  早点的不能只定义一个Statement sql; 这样只能取出最后的ResultSet定义两个Statement sql,sql2;再测试一下

#4


改一下sql,可以同时在一条sql中实现

#5


我是说我先读一个表A,另外一个表的数据要根据这个表A读出来的字段才能读取数据,也就是while里面还有while,数据库里有很多条记录,但是只是显示第一条,怎么不知道呢

#6


改成一句,去掉大循环里的小循环.
rs=sql.executeQuery("select a.* b.count(*) from student_credit_record a, bad_record b where b.student_id= by a.student_id order a.student_id");

#7


joyaga(joyaga) 
 

谢谢你啊,很多人都没看出来,说了一大堆都不知道,真是太感谢了,我能够加你吗,我QQ 2988976
希望向你学习

#8


String sqlstring="select count(*) from bad_record where student_id="+param;

这个语句只能读出表bad_record 中的student_id="+param的总数...返回一个记录...

如果要全部读出就写成:
String sqlstring="select * from bad_record where student_id="+param;