Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 连接时JDBC连接NullPointerException_Java_Jdbc_Nullpointerexception - Fatal编程技术网

Java 连接时JDBC连接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 =

我创建了一个简单的java类,它连接到数据库并输出一些数据。 调试时,我的类在尝试建立连接的地方停止,并抛出异常NullPointerException

这是我的密码

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()
调用中输出的错误消息。