如何在 executeQuery 上修复此 NullPointerException?

Cet*_*lem -4 java sqlite jdbc

我在我的简单 sql 语句的 executeQuery 上有一个 NullPointerException;我认为问题来自与 sqlite 的连接,但我无法弄清楚...

我的java方法:

    public Connection connect() throws SQLException {
    Connection conn = null;
    try {
        try {
            Class.forName("org.sqlite.JDBC");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        String url = "jdbc:sqlite:sakila.db.sqlite3";
        conn = DriverManager.getConnection(url);
        System.out.println("Connection to SQLite has been established.");
    } catch (SQLException e) {  
        System.out.println(e.getMessage());  
    }

    Statement stmt = conn.createStatement();        
    String sql = "SELECT * FROM FILM LIMIT 10";
    stmt.executeQuery(sql);
    return conn;
}
Run Code Online (Sandbox Code Playgroud)

这是控制台的结果

Connection to SQLite has been established.
Exception in thread "main" java.lang.NullPointerException
at org.sqlite.Stmt.executeQuery(Stmt.java:121)
at Connect.connect(Connect.java:33)
at Main.main(Main.java:10)
Run Code Online (Sandbox Code Playgroud)

提前致谢

小智 5

你的 finally 块,关闭连接,所以当语句

Statement stmt = conn.createStatement(); 
Run Code Online (Sandbox Code Playgroud)

到达时,它将抛出 NullPointerException。要解决此问题,您的代码应如下所示:

public Connection connect() throws SQLException {

        Connection conn = null;
        try {
            try {
                Class.forName("org.sqlite.JDBC");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            String url = "jdbc:sqlite:sakila.db.sqlite3";
            conn = DriverManager.getConnection(url);
            System.out.println("Connection to SQLite has been established.");
            Statement stmt = conn.createStatement();        
            String sql = "SELECT * FROM FILM LIMIT 10";
            stmt.executeQuery(sql);
            return conn;
        } catch (SQLException e) {  
            System.out.println(e.getMessage());  
        } finally {  
            try {  
                if (conn != null) {  
                    conn.close();  
                }  
            } catch (SQLException ex) {  
                System.out.println(ex.getMessage());  
            }  
        }
    }
Run Code Online (Sandbox Code Playgroud)