神秘的sql访问行为

时间:2012-01-12 09:21:21

标签: java mysql database jsp

我已经创建了一个简单的java类,可以访问sql数据库,但是工作正常 这是代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Query2 {

public static void main (String[] args) {
    try {
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/riconoscimento?"
                        + "user=root&password=root");
        Statement stmt = conn.createStatement();
        ResultSet rs;
        rs = stmt.executeQuery("SELECT * FROM utenti; ");
        while ( rs.next() ) {
            String passwordToRead = rs.getString("password");
            String usernameToRead = rs.getString("username");
            System.out.println(passwordToRead);
            System.out.println(usernameToRead);
        }
        conn.close();
    } catch (Exception e) {
        System.err.println("Database Access Error");
        System.err.println(e.getMessage());
    }
}
}

jsp页面中的相同代码不起作用,问题是try-catch块没有被执行,我不知道它是如何可能的 这是代码:

<%@ page language ="java" import="java.sql.*" %>
<!DOCTYPE html>
<html>
 <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>I dati inseriti per l'autenticazione sono:</title>
</head>
<body>
    <h1>
 <%
 try {
        Connection conn =    DriverManager.getConnection("jdbc:mysql://localhost/riconoscimento?"
                        + "user=root&password=root");
        Statement stmt = conn.createStatement();
        ResultSet rs;
        rs = stmt.executeQuery("SELECT * FROM utenti; ");
        while ( rs.next() ) {
            String passwordToRead = rs.getString("password");
            String usernameToRead = rs.getString("username");
            out.println(passwordToRead);
            out.println(usernameToRead);
        }
        conn.close();
    } catch (Exception e) {
        System.err.println("Database Access Error");
        System.err.println(e.getMessage());
    }
 %>
    </h1>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

  1. 尝试使用out object的flush()方法
  2. 为了调试应用程序,您可以将sql结果也放入logger或System.out
  3. 检查您的jsp文件是否由应用程序Web服务器处理(例如,如果您使用.html扩展名检查您的Web服务器是否将.html页面作为JSP处理而不仅仅作为HTML处理)。为此,您可以在代码段的开头添加一些日志记录
  4. 您还可以检查生成的HttpJspPage类(但似乎问题出在配置中)

答案 1 :(得分:0)

您是否期望将catch中的语句输出到JSP页面?如果是这样,您将需要使用out.println。 System.err.println将写入服务器错误日志。