java - 使用 Oracle SQL 结果集填充 Java swing JComboBox

标签 java oracle swing class

我正在开发一个简单的应用程序,其中包含一个 JComboBox 供用户选择。我是 Java 新手,在使用 SQL select 语句的结果填充 JComboBox 时遇到问题。这是我知识不足造成的!

我编写了 3 个类,一个 dbConnection 类来处理数据库方面的事情。另一个实例化我的 GUI 的类,最后一个类包含我的 main 方法:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

// Extends java.sql :~ describes connections to Oracle db
class dbConn {

    Connection conn;
    Statement stmt;
    ResultSet rs;
    String conString;
    String sqlString;

    void dbConn() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            conn = DriverManager.getConnection(conString);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
        if (conn != null) {
            System.out.println("Connection established, database uplink is online.");
        } else {
            System.out.println("Connection failed, please check database status.");
        }
    }
}

GUI 的第二课:

import javax.swing.*;

public class CaseMoverUI {
    void testUI(){

        // Create a new JFrame container
        JFrame jfrm = new JFrame("CaseMover");
        jfrm.setSize(550, 450);
        jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JComboBox jbox = new JComboBox();
        jfrm.add(jbox);
        jfrm.setVisible(true);
        SwingUtilities.invokeLater(new Runnable(){
            public void run(){
                new CaseMoverUI();
            }
        });
    }
}

最后:

public class sqlCaller {
    public static void main(String args[]){
        //instantiate db object and pass values to the constructor
        dbConn db = new dbConn();
        db.conString = "jdbc:oracle:thin:system/password123@127.0.0.1:1521:xe";
        db.sqlString = "SELECT true FROM dual";

        db.dbConn();
        CaseMoverUI ui = new CaseMoverUI();
        ui.testUI();
    }
}

我不确定该怎么做的第一件事是检索结果并将它们添加到 JComboBox。我知道我需要为 dbConn 类编写一个方法,并向其传递 SQL 查询。

使用 Oracle XE 的 HR 测试模式,SQL 查询可能类似于:

SELECT first_name FROM employees;

但是我不确定编写此方法的正确方法。任何帮助将不胜感激!

最佳答案

首先,您需要从数据库中获取结果列表:

您需要返回连接才能在其他方法中使用它,如下所示:

public Connection dbConn() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            conn = DriverManager.getConnection(conString);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
        if (conn != null) {
            System.out.println("Connection established, database uplink is online.");
        } else {
            System.out.println("Connection failed, please check database status.");
        }
      return conn;
    }

然后是获取员工列表的方法:

public List<String> listeEmployee() {
    List<String> list = new ArrayList<>();
    Connection con = dbConn();
    try {
        Statement stm = con.createStatement();

        String query = "SELECT first_name FROM employees";

        ResultSet resultat = stm.executeQuery(requete);
        while (resultat.next()) {
            list.add(resultat.getString("first_name"));
        }
    } catch (Exception e) {
        System.out.println("Exception = " + e);
    }
    return list;
}

然后您可以将此结果添加到您的 JComboBox 中,如下所示:

//Empty your JComboBox
jbox.removeAllItems();
for (String employee : listeEmployee) {
    jbox.addItem(employee);
}

关于java - 使用 Oracle SQL 结果集填充 Java swing JComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41837975/

相关文章:

java - 如何直接在java字节码上写/创建.class文件?

Java:如果在特定时间内未调用方法,则引发事件

forms - 需要为带有 oracle 数据库的 tomcat webapp 配置一个旧的 JDBCRealm

java - JFileChooser - 浏览到共享路径为\\machineIp

java - JTree 中的行颜色

java - 如何 sleep /等待 Java Swing 计时器

java - 无法使用查询从解析数据库中检索字符串

java - Java SOAP Web 服务应用程序中的用户登录方法不起作用

oracle - 您如何获得 Oracle 中的最大可能日期?

java - 如何从 SQL 中的非别名内联函数列标题中进行选择?