当前位置: 首页 > 面试题库 >

JTable用JComboBox填充数据

满勇军
2023-03-14
问题内容

我有一个带有表,组合框的框架,我想通过组合框用数据库中的数据填充表,但是如果我与itemlistener一起使用,我不会看到没有itemlistener的表,String sql="select * from Arlista"然后我会看到包含数据的表(combob = combobox)

combob.addItemListener(new ItemListener(){
    @Override
    public void itemStateChanged(ItemEvent e){
        tesztvalt=(combob.getSelectedItem()).toString();

        if (e.getItem().equals(tesztvalt))
        {
            try {

                Class.forName( driver );
                Connection connection = DriverManager.getConnection( url );
                String sql="select * from "+tesztvalt+"";
                Statement stmt = connection.createStatement();
                ResultSet rs = stmt.executeQuery( sql );
                ResultSetMetaData md = rs.getMetaData();
                int columns = md.getColumnCount();

                while (rs.next()) {
                    Vector row = new Vector(columns);

                    for (int i = 1; i <= columns; i++)
                    {
                        row.addElement( rs.getObject(i) );
                    }
                    data.addElement( row );

                }
                rs.close();
                stmt.close();
                connection.close();
            }catch(Exception ex) {
                System.out.println( e );
            }
            JTable table = new JTable(data, columnNames)
            {
                public Class getColumnClass(int column)
                {
                    for (int row = 0; row < getRowCount(); row++)
                    {
                        Object o = getValueAt(row, column);

                        if (o != null)
                        {
                            return o.getClass();
                        }
                    }
                    return Object.class;
                }
            };
            JScrollPane scrollPane = new JScrollPane( table );
            getContentPane().add( scrollPane );

            JPanel buttonPanel = new JPanel();
            getContentPane().add( buttonPanel, BorderLayout.SOUTH );
        }
    }
});

问题答案:
String sql="SELECT * FROM "+tesztvalt+"";

PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();

while (rs.next()) 
{
    tabla.setModel(model);
}

您有几个问题:

  1. 您使用PreparedStatement不正确。您的代码可能可以运行(我不确定),但是它没有利用的功能PreparedStatement

  2. 从ResultSet读取数据的代码没有意义,因为您甚至根本没有从ResultSet读取任何数据。

要使用PreparedStatement,代码类似于:

String sql = "Select * from ?";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString( 1, tesztvalt );
stmt.executeQuery();

现在,PreparedStatement将使用适当的分隔符来构建SQL查询,因此您无需担心。

如果要从特定表中读取所有数据,请检出表从数据库中TableFromDatabaseExample.java找到的代码。它显示了如何构建查询以及如何访问列名和数据。



 类似资料:
  • 我有一个带有table的框架,combobox,我想通过combobox用来自数据库的数据填充表,但是如果我使用itemlistener我看不到表,没有itemlistener和,我就看到了带有数据的表(combob=combobox)

  • 问题内容: 是否可以用int []填充JComboBox?我正在编写一个代码,该代码将使用填充了年份(整数)的JComboBox。 我写的代码是这样的: 我希望将它们转换为ComboBox中的整数,以便可以从中减去。我是否必须用字符串填充ComboBox,然后在输入它们之后使它们成为整数?还是有一种方法可以用int []实际填充ComboBox? 问题答案: 是泛型的,但是Java泛型不支持原始类

  • 问题内容: 我需要用ArrayList填充JComboBox。有什么办法吗? 问题答案: 使用ArrayList类的方法并将其传递给 有关更多信息,请参见JavaDoc和教程。

  • 问题内容: 我正在尝试使用我的Derby数据库数据填充Netbeans GUI-builder jTable。 我在Account.java类中使用以下代码: 理想情况下,我希望能够返回其中包含参数数据和列的tableModel,因为我知道在GUI中执行此方法是一种不好的做法。在线上的所有教程都没有显示如何将数据发送到另一个类,它们只是在GUI类中执行数据库代码。 我有一个错误,它看不到数据和列,

  • 我在NetBeans IDE中工作,语言是Java,主要的类是JFrame Form。 我需要从Jtable获取所有数据并用这些数据填充数组。数组代表矩阵。 代码如下 我有一个错误 线程“AWT-EventQueue-0”java.lang.ClassCastException:java.lang.String无法转换为java.lang.Double 所以将表中的元素设置为双精度不是那么容易吗?

  • 我在Account.java类中使用以下代码: 理想情况下,我希望能够返回包含参数数据和列的tableModel,因为我知道在我的GUI中使用这种方法是不好的做法。所有在线教程都没有显示如何将数据发送到另一个类,它们只是在GUI类中执行数据库代码。 我有一个错误,它无法看到数据和列,因为它们是在我的方法的一个不可访问的部分中声明和使用的。在我完成这些之后,我需要找到一种方法来将它传递给我的GUI类