getConnection()中抛出空指针异常

ale*_*eka 2 java mysql sql eclipse

我有以下情况:我有一个与数据库(MySQL)连接的java代码.当我从eclipse运行java代码并从数据库中获取数据时,一切正常.但是当我从html代码运行java代码作为Applet时,它会抛出Null指针异常,并且在这种情况下我检测到问题发生在以下java代码中:

private  Connection getConnection() throws SQLException{
   try {
        Class.forName("com.mysql.jdbc.Driver");
        String name="jdbc:mysql://localhost:3306/sensors_data";
        String username="root";
        String psw="11111";

        conn = DriverManager.getConnection(name,username,psw);
   } catch(Exception e) {
        e.printStackTrace();
   }
   return conn;
Run Code Online (Sandbox Code Playgroud)

}

对象"conn"为null.

Jon*_*eet 5

好吧,如果DriverManager.getConnection()抛出一个异常,你打印出异常,但conn无论如何都会返回.您可能应该让异常传播给调用者 - 毕竟,调用者现在可以使用他们可以使用的连接.

(你也在捕捉任何异常,而不仅仅是SQLException,这是一个坏主意.)

我不希望能够从applet直接连接到数据库 - 我不记得applet网络连接的确切限制,但这可能是问题所在.数据库运行在哪里与Web服务器相比?如果它不在发布applet的同一主机上,我不希望它能够在没有特殊权限的情况下建立连接.(localhost我怀疑,尝试连接是特别不可能的.)

您应该能够DriverManager.getConnection在调试日志中看到抛出的异常- 这应该是第一个调用端口,以及修复异常处理.