Java 连接时JDBC连接NullPointerException
我创建了一个简单的java类,它连接到数据库并输出一些数据。 调试时,我的类在尝试建立连接的地方停止,并抛出异常NullPointerException 这是我的密码Java 连接时JDBC连接NullPointerException,java,jdbc,nullpointerexception,Java,Jdbc,Nullpointerexception,我创建了一个简单的java类,它连接到数据库并输出一些数据。 调试时,我的类在尝试建立连接的地方停止,并抛出异常NullPointerException 这是我的密码 public class test_con { public static void main(String[] args) throws SQLException { OdbcConnection dbcon = new OdbcConnection(); Connection con =
public class test_con {
public static void main(String[] args) throws SQLException {
OdbcConnection dbcon = new OdbcConnection();
Connection con = dbcon.getConnection();
String query = "SELECT Client Code FROM Clients";
Statement stmt =con.createStatement();
ResultSet resl = stmt.executeQuery(query);
while(resl.next()){
System.out.println(resl.getString("Client Code"));
}
}
}
我的连接代码是
public Connection getConnection() {
Connection con = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String connectionUrl = "jdbc:odbc:SynergistConnection";
con = DriverManager.getConnection(connectionUrl, "******", "******");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("SQL Exception: " + e.getMessage());
} catch (ClassNotFoundException cE) {
System.out.println("Class Not Found Exception: " + cE.toString());
}
return con;
}
有没有人遇到过类似的问题或知道如何解决
堆栈跟踪:
java.lang.NullPointerException
at org.apache.jsp.test_005flaur_jsp._jspService(test_005flaur_jsp.java:124)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
您的getConnection()方法似乎正在引发异常。这就是为什么连接对象con没有被初始化的原因。因此,您将在第行获得NullPointerException:
Statement stmt =con.createStatement();
Java 8中已删除了
sun.jdbc.odbc.JdbcOdbcDriver
类。(见附件。)
编写的代码将捕获ClassNotFoundException
(如果是由上述原因引起的),并返回null
。(坏,坏,坏…)
但调用者会这样做:
Connection con = dbcon.getConnectionSynergist2();
...
Statement stmt = con.createStatement();
假设
getConnectionSynergist2
是getConnection
方法(并且您将代码复制到问题中是一个错误),那么您可能会调用createStatement
,调用null上的getConnection()
中有一个异常,因此您的连接为null。张贴stacktrace向我们展示stacktrace。另外,请检查您在每种情况下使用的Java版本是否相同。另外,您能否向我们显示在getConnection()
调用中输出的错误消息。