没有数据在使用ms访问的jsp中发现异常

时间:2014-04-28 00:08:23

标签: java jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.sql.*,java.io.*,java.lang.*,java.util.*,javax.servlet.*" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Guilty agents</title>
</head>
<body>
       <table>
        <tr>
        <td> Agent </td>
        <td> Guilt Probability </td>
        </tr>        
    <%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con1=DriverManager.getConnection("jdbc:odbc:leak");
    Connection con2=DriverManager.getConnection("jdbc:odbc:dld");
    ResultSet rs1,rs2;
    int T=0,TiS=0;
    float S=1;
    float RiS[]=new float[4];
   Statement s1=con1.createStatement();
   Statement s2=con2.createStatement();

    String query1="select fileName from Leaked";
    String query2="select Filename from Data";
    try {
        rs1=s1.executeQuery(query1);//leaked
        rs2=s2.executeQuery(query2);//Data
        while(rs1.next()){
        S++;
        while(rs2.next()){
        T++;
      if(rs1.getString(1).equalsIgnoreCase(rs2.getString(1)))
          TiS++;
        }
        }
    String query3="select fileName from Leaked";

        rs1=s1.executeQuery(query3);
      while(rs1.next()){
        for(int i=1;i<=4;i++){
        query2="select FileName from agent"+(char)i;
        rs2=s2.executeQuery(query2);
        while(rs2.next())
        if(rs1.getString(1).equalsIgnoreCase(rs2.getString(1)))
            RiS[i]++;
        %>
        <tr><td>Agent<%out.println(i);%></td>
            <td><%out.println(RiS[i]/S);%></td>
        </tr>
        <%
        }
        }
        }
  catch(SQLException e)
       {out.println(e);}%>
    </table>     
<%
    con1.close();
    con2.close();
%>
</body>
</html>

这是我的jsp页面,用于检索和显示来自2个数据库的数据。 DSN是dld和泄漏。当我尝试执行此代码时,它显示没有找到数据,尽管所使用的表中有数据。而且,当我尝试使用printStackTrace()时,它什么也没显示。请帮忙!

1 个答案:

答案 0 :(得分:0)

您的第一个while循环耗尽rs1

while(rs1.next()){
    S++;
    while(rs2.next()){
    T++;
  if(rs1.getString(1).equalsIgnoreCase(rs2.getString(1)))
      TiS++;
    }

此循环仅在rs1中没有其他行时结束(即rs1.next()false)。 完成后,您将尝试以下操作:

while(rs1.next()){

由于rs1已经用尽,此循环永远不会启动,并且您什么都不打印。