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.
好吧,如果DriverManager.getConnection()抛出一个异常,你打印出异常,但conn无论如何都会返回.您可能应该让异常传播给调用者 - 毕竟,调用者现在可以使用他们可以使用的连接.
(你也在捕捉任何异常,而不仅仅是SQLException,这是一个坏主意.)
我不希望能够从applet直接连接到数据库 - 我不记得applet网络连接的确切限制,但这可能是问题所在.数据库运行在哪里与Web服务器相比?如果它不在发布applet的同一主机上,我不希望它能够在没有特殊权限的情况下建立连接.(localhost我怀疑,尝试连接是特别不可能的.)
您应该能够DriverManager.getConnection在调试日志中看到抛出的异常- 这应该是第一个调用端口,以及修复异常处理.