有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    我认为问题来自你的函数“查询”。你正在关闭那里的连接。所以你不能在主屏幕上打印结果