java SQL查询方法返回null
我有一个管理数据库的类。然而,由于我创建了类static
中的所有方法,查询方法不再工作:它返回我null
这是DatabaseManager类:
public class DatabaseManager {
public final static String DBPath = "database.db";
private static Connection connection = null;
private static Statement statement = null;
/**
* Connect to the database.
* @return True if succeeded to connect to the database. False if not.
*/
private static boolean connect() {
try {
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:" + DBPath);
statement = connection.createStatement();
return true;
}
catch (ClassNotFoundException | SQLException connectException) {
connectException.printStackTrace();
System.out.println("Unable to connect to the database.");
return false;
}
}
/**
* Close the connection.
*/
private static void close() {
try {
connection.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
/**
* Execute a query inside a database.
* @param queryStr the SQL query
* @return ResultSet object is the result of the query (if it succeeded)
*/
public static ResultSet query(String queryStr) {
connect();
ResultSet result = null;
try {
result = statement.executeQuery(queryStr);
}
catch (SQLException e) {
e.printStackTrace();
System.out.println("Impossible to execute the following query : " + queryStr);
System.out.println("It may contains error.");
}
finally {
close();
}
return result;
}
}
当我将其添加到query
方法时:
try {
while(result.next()) {
System.out.println(result.getString("columnTest"));
}
}
catch (SQLException e) { e.printStackTrace(); }
我在我的终端上得到了很好的结果。(数据来自数据库)。但当我删除它并将其添加到主方法时:
import DatabaseManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) {
ResultSet result;
result = DatabaseManager.query("SELECT * FROM DataTest");
try {
while (result.next()) {
System.out.println(result.getString("columnTest"));
}
}
catch (SQLException e) {
e.getStackTrace();
}
}
}
它打印null
,就好像查询不返回任何内容一样。。。为什么会这样
# 1 楼答案
我认为问题来自你的函数“查询”。你正在关闭那里的连接。所以你不能在主屏幕上打印结果