为什么老是只读数据库中第一条记录,急啊,高手解答

时间:2022-12-21 21:41:06
我的代码是这样的:
<% 
Connection con;
Statement sql;
ResultSet rs,rs1;
int param;
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())
 { 
    out.print("<tr>");
    param=rs.getInt("student_id");
param2=rs.getString(2);
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>"+rs.getString(3)+"</td>");
//out.print("<td>"+rs.getString(6)+"</td>");
out.print("<td><font color=#990033>"+rs.getInt("credit_degree")+"</font></td>");
//out.print("<td>"+rs.getDate("student_intime")+"</td>");
try{ rs1=sql.executeQuery("select count(*) from bad_record where student_id="+param);
while(rs1.next())
{
        out.print("<td>"+rs1.getInt(1)+"</td>");
}
}
catch(SQLException e) {}
%>
   <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 e1) {}%>

为什么老是只读数据库中的第一条记录啊?

22 个解决方案

#1


count(*)是 计算记录条数的命令你把更改为*

#2


count(student_id)

#3


我要的就是选择数据记录的条数啊,难道这样不行吗

#4


以上两种方法都不行啊,怎么回事情啊

#5


哎,这里真的没有JSP高手吗?郁闷

#6


看了,好象没有错啊,

你库里面不会只有一条记录吧!!!

#7


不是,有好几条,不过老是只有显示第一条,真是郁闷

#8


指针没有移动啊

#9


在rs.next()的外面再做次循环呀,要不怎么能移动记录集呢?

#10


taleny(非常可乐) 还要怎么循环啊 ,不是已经有循环了吗

#11


你移动记录集的时候肯定要触发事件,就在这个事件的时候做循环。如果一开始页面就需要显示多条记录,一开始就做循环,如果是点击button移动记录集,就在这个时候做。

#12


try
        {
        for(int qq=0;qq<(16*(page2));qq++)
        {rs.next();}
            while(rs.next())
            {
                id[l]=rs.getString("id");
                title[l]=rs.getString("title");
date[l]=rs.getString("date");
date2[l]=date[l].substring(0,10);
nod[l]=rs.getString("nod");
                l=l+1;
            }
        }
        catch(Exception e)
        {
        }
这是我自己网站的一段代码,页面要求显示16条记录。在rs.next()的外面有个for循环。

#13


我是初学者啊, taleny(非常可乐) 那你的for(int qq=0;qq<(16*(page2));qq++)
        {rs.next();}
这段代码什么意思啊 ,我还是不大懂你的意思哦

#14


郁闷,讲了等于没讲

#15


你可以用游标啊,这样很容易解决的。

#16


不要在循环里面嵌查询。因为你的程序有很多漏洞。
建议写成一句sql语句这样就没有啥问题了

#17


我是查询两个表里面的记录,先要查出一个表的字段,另一个表在根据这个字段去查,有好点的办法吗

#18


你的记录没有移动呀
在while循环里把指针指向下一条

#19


没移动???

#20


有两个while啊 ,每个不是都有.next()的吗 ,怎么还要移动

#21


还是没人知道真正的错误啊????
这样一段代码在我另一个网页当中就可以的,为什么这里就错了呢

#22


sql=con.createStatement();
     rs=sql.executeQuery("select * from student_credit_record order by student_id");
执行后产生的结果在
rs1=sql.executeQuery("select count(*) from bad_record where student_id="+param)
被覆盖了,所以只显示第一条

你可以在后面的rs1=sql.executeQuery("select count(*) from bad_record where student_id="+param)前面重新定义一个
sql2=con.createStatement();
rs1=sql2.executeQuery("select count(*) from bad_record where student_id="+param)
这样肯定就没问题了!!!

#1


count(*)是 计算记录条数的命令你把更改为*

#2


count(student_id)

#3


我要的就是选择数据记录的条数啊,难道这样不行吗

#4


以上两种方法都不行啊,怎么回事情啊

#5


哎,这里真的没有JSP高手吗?郁闷

#6


看了,好象没有错啊,

你库里面不会只有一条记录吧!!!

#7


不是,有好几条,不过老是只有显示第一条,真是郁闷

#8


指针没有移动啊

#9


在rs.next()的外面再做次循环呀,要不怎么能移动记录集呢?

#10


taleny(非常可乐) 还要怎么循环啊 ,不是已经有循环了吗

#11


你移动记录集的时候肯定要触发事件,就在这个事件的时候做循环。如果一开始页面就需要显示多条记录,一开始就做循环,如果是点击button移动记录集,就在这个时候做。

#12


try
        {
        for(int qq=0;qq<(16*(page2));qq++)
        {rs.next();}
            while(rs.next())
            {
                id[l]=rs.getString("id");
                title[l]=rs.getString("title");
date[l]=rs.getString("date");
date2[l]=date[l].substring(0,10);
nod[l]=rs.getString("nod");
                l=l+1;
            }
        }
        catch(Exception e)
        {
        }
这是我自己网站的一段代码,页面要求显示16条记录。在rs.next()的外面有个for循环。

#13


我是初学者啊, taleny(非常可乐) 那你的for(int qq=0;qq<(16*(page2));qq++)
        {rs.next();}
这段代码什么意思啊 ,我还是不大懂你的意思哦

#14


郁闷,讲了等于没讲

#15


你可以用游标啊,这样很容易解决的。

#16


不要在循环里面嵌查询。因为你的程序有很多漏洞。
建议写成一句sql语句这样就没有啥问题了

#17


我是查询两个表里面的记录,先要查出一个表的字段,另一个表在根据这个字段去查,有好点的办法吗

#18


你的记录没有移动呀
在while循环里把指针指向下一条

#19


没移动???

#20


有两个while啊 ,每个不是都有.next()的吗 ,怎么还要移动

#21


还是没人知道真正的错误啊????
这样一段代码在我另一个网页当中就可以的,为什么这里就错了呢

#22


sql=con.createStatement();
     rs=sql.executeQuery("select * from student_credit_record order by student_id");
执行后产生的结果在
rs1=sql.executeQuery("select count(*) from bad_record where student_id="+param)
被覆盖了,所以只显示第一条

你可以在后面的rs1=sql.executeQuery("select count(*) from bad_record where student_id="+param)前面重新定义一个
sql2=con.createStatement();
rs1=sql2.executeQuery("select count(*) from bad_record where student_id="+param)
这样肯定就没问题了!!!