首页 > 解决方案 > JComboBox 未由数据库 JDBC 信息填充 - Java

问题描述

我需要用 SQLite 数据库中的元素列表填充 JComboBox。目前,我没有得到数据来填充它,但我想在 JComboBox 内没有要引入的数据时填充它,并使用一个元素表示没有数据:

私人连接连接;--> Java 文件的开头。

我的想法是,如果没有数据,只需用一个元素填充 JComboBox,如果有数据,则再填充数据和一个元素。

这样做的结果是,JComboBox 没有被填充,什么都没有,并且错误:

数据库连接关闭

我能做些什么?谢谢。

private boolean cargarListasConfiguraciones() {

String sql = "SELECT * FROM "+table_name;

if (conn == null) {
    conn = this.connectDatabase();
}

try (
     Statement stmt  = conn.createStatement();
     ResultSet rs    = stmt.executeQuery(sql)){


    if (rs.first() == false) {
        this.cbConfigsSelector.addItem("<Without data>");
        this.cbConfigsSelector.setSelectedItem("<Without data>");   
        this.cbConfigsSelector.setEnabled(false);    

        return true;
    } else {
        this.cbConfigsSelector.addItem("<No one selected>");
        this.cbConfigsSelector.setSelectedItem("<No one selected>");    

        while (rs.next()) {

            this.cbConfigsSelector.addItem(rs.getString("config_name"));

        }

        return true;
    }

} catch (SQLException e) {
    System.out.println(e.getMessage());
    return false;
}
}

我的ConnectDatabase 函数

    private Connection connectDatabase() {

    String JDBC_url = "jdbc:sqlite:C:/Users/Multimedia/eclipse-workspace/Automatizador-MQS-Productos/sqls/mqs_providers_configs.sqlite";

    if (conn != null) {
        return conn;
    }

    conn = null;

    try {

        conn = DriverManager.getConnection(JDBC_url);
        System.out.println("Connected");

    } catch (SQLException e) {
        e.printStackTrace();
        System.out.println("Error accesing database");
    } finally {
       try {
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }

    return conn;
}

标签: javasqliteswingjdbcjcombobox

解决方案


我相信您缺少代码行

Class.forName("com.mysql.jdbc.Driver");

如果这不能解决问题或已经存在,您能否提供方法 connectDatabase()?


推荐阅读