0

我有一个 MS Access 数据库,其中列名“tname”中有一组平板电脑名称。我在 java 小程序中有 5 个组合框。每次加载时,所有 5 个组合框都必须更新 tname 中的项目。我使用了以下代码。它仅将 tname 中的第一项添加到第一个组合框中。其他框仍然是空的。但是,如果我更新一个组合框,它就可以工作。但我需要 5 个组合框才能更新。请指导我解决我遇到的问题。

try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn9=DriverManager.getConnection("jdbc:odbc:vasantham","","");
Statement st9=conn9.createStatement();
ResultSet rs9=st9.executeQuery("select DISTINCT tname from try");

while(rs9.next())
{
  ct19.addItem(rs9.getString("tname"));
  ct29.addItem(rs9.getString("tname"));
  ct39.addItem(rs9.getString("tname"));
  ct49.addItem(rs9.getString("tname"));
  ct59.addItem(rs9.getString("tname"));
}


conn9.close();
}
4

3 回答 3

2

我已经尝试过,一切正常,因为我想知道有什么需要temp变量来查看我的代码,它的完整工作代码

import java.awt.FlowLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JComboBox;
import javax.swing.JFrame;

public class ResultSetDemo {

    public ResultSetDemo() {
        JFrame f = new JFrame();
        f.setLayout(new FlowLayout());
        JComboBox cb1 = new JComboBox();
        f.add(cb1);
        JComboBox cb2 = new JComboBox();
        f.add(cb2);
        JComboBox cb3 = new JComboBox();
        f.add(cb3);
        JComboBox cb4 = new JComboBox();
        f.add(cb4);
        JComboBox cb5 = new JComboBox();
        f.add(cb5);

        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/database_name", my_sql_username, mysql_password);
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select DISTINCT tname from try");
            while (rs.next()) {
                cb1.addItem(rs.getString("tname"));
                cb2.addItem(rs.getString("tname"));
                cb3.addItem(rs.getString("tname"));
                cb4.addItem(rs.getString("tname"));
                cb5.addItem(rs.getString("tname"));  

            }
        } catch (Exception ex) {
            System.out.println(ex);
        }

        f.setSize(600, 100);
        f.setVisible(true);

    }

    public static void main(String[] args) {
        new ResultSetDemo();
    }
}

它用表中的所有填充cbox

于 2012-08-02T08:22:47.520 回答
1

假设名为的变量ct[1-5]9引用 的不同实例JComboBox,“如果添加重复String对象,可能会出现问题。” 如有必要,您可以复制这些项目,如API中所示。

更好的方法是更新DefaultComboBoxModel每个JComboBox实例共享的单个。

于 2012-08-02T09:14:35.547 回答
0

不要为每个组合框分配每个检索到的值,而是将其分配给一个临时字符串并将其分配给每个组合框。

String tmp9;
while(rs9.next())
{
  tmp9=rs9.getString("tname");
  ct19.addItem(tmp9);
  ct29.addItem(tmp9);
  ct39.addItem(tmp9);
  ct49.addItem(tmp9);
  ct59.addItem(tmp9);
}
于 2012-08-02T07:33:42.987 回答