嗯,我需要從數據庫中取值,並將它們插入到組合框中進行選擇。從數據庫解析數據到組合框
聽起來很容易使用2班,UI類和實體類,其中包含裏面所有的SQL查詢來做到這(什麼關係數據庫,它在那裏):
//This is the UI class
public void fillComboBox(){
Entity et = new Entity();
try{
//call out dbConnector method from Entity class
conn = et.dbConnector();
String query="select distinct Name from DbTable order by Name";
PreparedStatement pst = conn.prepareStatement(query);
ResultSet rs = pst.executeQuery();
while(rs.next()){
//shows topic data in combobox
comboBoxName.addItem(rs.getString("Name"));
}
}
catch(Exception e){
e.printStackTrace();
}
}
//runs method
fillComboBox();
現在,上面的輸出可以正常工作,沒有任何故障。在我的表單中,組合框顯示從我指定列中的數據庫中取得的唯一值。
問題出現時,在其中實施其他層。
總之,我現在有三個班。
第1類:UI - >此類純粹處理UI
2類:控制器 - >此類純粹運行方法
3類:實體 - >此類純粹運行任何與sql數據庫查詢有關的事情
我所做的,就是修改上面的代碼,代碼如下:
這是UI類:
//Declare Variables
JComboBox comboBoxName = new JComboBox();
Controller ct = new Controller();
comboBoxName.addItem(ct.fillComboBox());
和控制器類中的某個方法:
//Declare Variables
Entity et = new Entity();
public String fillComboBox(){
return et.takeNames();
}
最後,我的實體類,其中包含內的所有SQL查詢。
//Declare all variables first
Connection conn = null;
String task = null, names = null;
String query;
//This method connects to database
//There's nothing wrong with this method, I just placed it here to give a general overview of what this method exactly is for you to understand, as I will be calling it out later. Yes, I removed off the **URL** portion intentionally.
public static Connection dbConnector(){
try{
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:URL");
JOptionPane.showMessageDialog(null, "Connected!");
return conn;
}
catch(Exception ex){
JOptionPane.showMessageDialog(null, ex);
return null;
}
}
public String takeNames(){
try{
conn = dbConnector();
query = "select distinct Name from DbTable order by Name";
PreparedStatement pst = conn.prepareStatement(query);
ResultSet rs = pst.executeQuery();
while(rs.next()){
//shows Name data in combobox
names = rs.getString("Name");
}
pst.close();
}
catch(Exception ex){
ex.printStackTrace();
}
return names;
}
嗯,基本上,這是如何「新」的實施運行的是,在UI類召喚出Controller類,它調用了實體類,它運行的內部和分析方法返回值一直到用戶界面。
從分離程序的不同部分的角度來看,此方法非常有用,使其看起來更整齊。太糟糕了,這是一個頭痛的執行。 >。>
現在,這個錯誤將會是,它將只檢索1個值,而不是多個值。它所做的檢索是我指定的特定列中的第一個「獨特」值。其餘的「獨特」值將被忽略。
我有一種預感,它有一切做與RS設置,@:
ResultSet rs = pst.executeQuery();
我腦子裏想的是什麼,只需要1點的值,並將它,然後忽略其餘部分。有沒有人有任何解決方案?我嘗試了arraylist,但未能就如何在arraylist中存儲大量rs值(這真的讓我難倒了>。>)
我做了冗長的道歉後,但我盡力做了,直到我所能,我被困在這部分時間之前.....
你能做些什麼像插入一些你面臨的問題的圖像頂部。這是一個文本牆的朋友。越早掌握這個問題的人就越有可能得到答案。一張圖片勝過千言萬語! – JGFMK
我指定的特定列 - 具體說明... – JGFMK
編碼器不需要運行註釋,您是如何編寫應用程序的。他們只需要看現在的代碼。他們可以理解代碼。如果您提供樣本數據表以及您得到的內容與想要澄清事物的內容! – JGFMK