我正在开发一个简单的应用程序,其中包含一个 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/