0

私はMSAccessデータベースを持っています。このデータベースには、列名'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 に答える