2014-03-04 74 views
0

嘗試並保持簡單,我有服務器數據庫鏈接到我的Java應用程序試圖模擬播放列表(或歌曲庫),但是我想要添加一個功能,用戶可以從jcombobox中選擇藝術家的名字,並且他們所有的歌曲都會出現。我知道如何手動執行此操作,但問題是如果用戶使用新的藝術家名稱將新歌曲添加到數據庫中,我希望jcombobox更新。然後,我必須通過代碼手動在jcombobox的列表中添加新的藝術家名稱。是否有可能將JComboBox鏈接到SQL Server數據庫

我的sql服務器數據庫有一個ID是一個i​​nt和主鍵,藝術家是文本,名稱是文本,評級是int和playcount是int。不知道是否有其他任何東西是有價值的,但我想要做的是讓jcombobox自動更新,如果添加一個新的藝術家。

如果你能指出我的方向正確,我們將非常感謝(如果它可能在第一個地方,我是初學者如果裸露在我身邊)。

回答

0

以下是您的示例代碼。它能做什麼: 1)創建一個組合框 2)建立從類型DemoModelItem的項目(嘗試註釋掉overrided toString方法) 3)組合框模型設置組合框模型

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

import javax.swing.DefaultComboBoxModel; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 

class DemoModelItem { 
public String objectName; 
public String objectType; 

public DemoModelItem(String objectName,String objectType){ 
    this.objectName = objectName; 
    this.objectType = objectType; 
} 

public String toString(){ 
    return objectType+"-"+objectName; 
} 
} 

public class ComboTest { 
public static Connection getConnection() throws Exception { 
    Connection conn = null; 
    //open connection 
    return conn; 
} 

public static DefaultComboBoxModel buildComboBoxModel() throws Exception { 
    DefaultComboBoxModel comboBoxModel = new DefaultComboBoxModel(); 
    String SQL = "SELECT object_name, object_type from some_table";   
    Connection c = null; 
    try { 
     c = getConnection(); 
     PreparedStatement ps = c.prepareStatement(SQL); 
     ResultSet rs = ps.executeQuery(); 
     while(rs.next()){ 
      comboBoxModel.addElement(new DemoModelItem(rs.getString("OBJECT_NAME"),rs.getString("OBJECT_TYPE"))); 
     } 
     rs.close(); 
     ps.close(); 
    } catch (Exception e) { 
     throw e; 
    }finally{ 
     try{c.close();}catch(Exception e){;} 
    } 
    return comboBoxModel; 
} 

public static void main(String[] args) throws Exception { 
    JComboBox comboBox = new JComboBox(); 
    comboBox.setModel(buildComboBoxModel()); 

    JFrame frame = new JFrame("Combo Demo"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    frame.getContentPane().add(comboBox); 
    frame.pack(); 
    frame.setVisible(true); 
} 
} 

在這裏,而不是使用 模型.addElement()嘗試使用JcomboBox.addItem();

相關問題