【问题标题】:JTable not populating data from MySQLJTable 没有从 MySQL 填充数据
【发布时间】:2012-12-26 10:58:39
【问题描述】:

我正在尝试将存储在我的数据库中的数据填充到 JTable 中。我有一个println 语句“将记录添加到数据库”,它打印了 18 次,因此数据库中的行数与打印语句的数量相匹配。但是我的 JTable 中没有显示任何内容,而且我不知道错误在哪里。

代码:

try {
        conn = SQLConnect.ConnectDb();
        String sql = "SELECT * FROM CriminalRecords WHERE FName = ? and Sname = ?";

        pst = conn.prepareStatement(sql);
        pst.setString(1, NameSearch.getText());
        pst.setString(2, SurnameSearch.getText());
        rs = pst.executeQuery();

            //display data from db into table hmm  
            ResultSetMetaData md = rs.getMetaData();
            int columnNumber = md.getColumnCount();
            Vector columns = new Vector(columnNumber);

            //  Get column names
            //store column names
            for(int i=1; i<=columnNumber; i++) 
            {
                columns.add(md.getColumnName(i));
            } 

            Vector data = new Vector();
            Vector row;

        //store row data
        while(rs.next())
        {
            row = new Vector(columnNumber);
            for(int i=1; i<=columnNumber; i++)
            {
                row.add(rs.getObject(i));
                System.out.println("Records added to Table");
            }
            data.add(row);

        }
        JTable table1 = new JTable(data, columns);
        this.add(table1);
        rs.close();
        pst.close();
        conn.close();

JTable 代码

/---- table1 ----
            table1.setModel(new DefaultTableModel(
                new Object[][] {
                    {" ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
                    {null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
                    {null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
                    {null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
                    {null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
                    {null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
                    {null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
                },
                new String[] {
                    "First Name", "Middle Name", "Surname", "Date of Birth", "Address", "Home Phone", "Business Phone", "Mobile Phone", "Resident Status", "Sex", "Race", "Incident Location", "Zone", "Premise Type", "Date Recorded", "Time Recorded", "Weapons", "Crime Offences"
                }
            ));
            table1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            scrollPane1.setViewportView(table1);

【问题讨论】:

  • 您希望如何查看数据?你会在其他地方迭代 Vector 吗?
  • 你在上面的代码中哪里看到了JTable?您正在向 Vector 添加行,但看不到 JTable
  • 哦,我明白了,所以我现在应该将向量添加到 Jtable,或者有更简单快捷的方法吗?
  • @maciejcygan 根据您最后的评论,我建议您阅读一下How to use Tables
  • 好的,谢谢,我会看一下,我还没有使用过表格,所以我对 java 的这方面很陌生。

标签: java mysql netbeans jtable swig


【解决方案1】:

因此,虽然它不是最好的解决方案,但它确实有效,这对我现在有用。

import net.proteanit.sql.DbUtils;
//
//
//
try {
        conn = SQLConnect.ConnectDb();
        String sql = "SELECT * FROM CriminalRecords WHERE FName = ? and Sname = ?";

        pst = conn.prepareStatement(sql);
        pst.setString(1, NameSearch.getText());
        pst.setString(2, SurnameSearch.getText());
        rs = pst.executeQuery();

        table1.setModel(DbUtils.resultSetToTableModel(rs));

} catch (SQLException ex) {
        Logger.getLogger(DatabaseP.class.getName()).log(Level.SEVERE, null, ex);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    相关资源
    最近更新 更多