我在我的简单 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)