2014-03-04 60 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();

相关问题