在JSP、while和if循环中找不到使用SQL的数据

在JSP、while和if循环中找不到使用SQL的数据,sql,database,jsp,aggregate,Sql,Database,Jsp,Aggregate,我已经为此奋斗了好几个小时,但就我即将到达的地方而言,我仍然完全离开了。此页面通过查询链接,以加载上一页所选图片的特定信息记录 如果我转到图片没有分级的链接,它将加载页面,分级为0没有问题。如果我点击一个我知道有评级的页面,它会给我一个“找不到数据”的异常 if (session.getAttribute("loginOK") != "true") { response.sendRedirect("index.jsp"); } String id = request.getParame

我已经为此奋斗了好几个小时,但就我即将到达的地方而言,我仍然完全离开了。此页面通过查询链接,以加载上一页所选图片的特定信息记录

如果我转到图片没有分级的链接,它将加载页面,分级为0没有问题。如果我点击一个我知道有评级的页面,它会给我一个“找不到数据”的异常

if (session.getAttribute("loginOK") != "true") {
    response.sendRedirect("index.jsp");
}

String id = request.getParameter("photoid");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection cn = DriverManager.getConnection("jdbc:odbc:GalleryDB", "", "");
Statement st = cn.createStatement();
ResultSet r = st.executeQuery("SELECT AVG(rating) AS aRating, FileName, Title, Date, Location, Description FROM Photo LEFT JOIN Rating ON Photo.PhotoID = Rating.PhotoID WHERE Photo.PhotoID = " + id + " GROUP BY Rating.PhotoID, FileName, Title, Date, Location, Description;");

String html = "";
String image = "";

while (r.next()) {
    image += "<img align='right' src='images/" + r.getString("FileName") + "'/>";
    html += "Title: " + (r.getString("Title") + "</br></br>");
    html += "Date: " + (r.getString("Date") + "</br></br>");
    html += "Location: " + (r.getString("Location") + "</br></br>");
    html += "Description: " + (r.getString("Description") + "</br></br>");

    if (r.getString("aRating") != null) {
        html += "Rating: " + (r.getString("aRating"));
    } else {
        html += "0";
    }

}
cn.close();
if(session.getAttribute(“loginOK”)!=“true”){
sendRedirect(“index.jsp”);
}
字符串id=request.getParameter(“photoid”);
forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
连接cn=DriverManager.getConnection(“jdbc:odbc:GalleryDB”,“”,“”);
语句st=cn.createStatement();
ResultSet r=st.executeQuery(“从Photo.PhotoID=rating.PhotoID,其中Photo.PhotoID=“+id+”按rating.PhotoID、文件名、标题、日期、位置、描述分组,从照片左连接评级中选择AVG(评级));
字符串html=“”;
字符串图像=”;
while(r.next()){
图像+=”;
html++=“Title:”+(r.getString(“Title”)+“

”; html++=“日期:”+(r.getString(“日期”)+“

”; html++=“位置:”+(r.getString(“位置”)+“

”; html++=“Description:”+(r.getString(“Description”)+“

”; if(r.getString(“aRating”)!=null){ html++=“评级:”+(r.getString(“aRating”); }否则{ html+=“0”; } } cn.close();

有人能就为什么会发生这种情况给出一些建议吗

在sqlplus或后端执行查询时,是否检查了是否有记录?是的,给出deffinalty错误的特定页面的平均评级应为3。我用SQL在access中运行了相同的查询(正如我们设置的那样),然后我很快得到了一个结果。似乎
id
没有填充您期望的值。您是否尝试过打印SQL字符串而不是执行它,以确保
id
得到正确的值?Offtopic-糟糕的设计;调试应该会有所帮助。