<%@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()时,它什么也没显示。请帮忙!
答案 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
已经用尽,此循环永远不会启动,并且您什么都不打印。