jTable仅显示模型的第一条记录

时间:2014-06-04 09:25:18

标签: java jtable

我已经从C#迁移到java,所以我是java技术的新手。

我尝试使用 DefaultTableModel 将数据从 SQLSERVER 填充到 jTable 。代码就在这里。

public class mainScreen extends javax.swing.JFrame {
public mainScreen() {
    initComponents();

    try {  
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
        "databaseName=Northwind;user=im;password=123;";
    Connection con = DriverManager.getConnection(connectionUrl);

        Statement stmt = null;
        ResultSet rs = null;
        // SQL query command
        String SQL = "SELECT * FROM Products";
        stmt = con.createStatement();
        rs = stmt.executeQuery(SQL);

        ResultSetMetaData mtd=rs.getMetaData();
        int columns=mtd.getColumnCount();
        Vector columnName=new Vector();
        Vector DataRows=new Vector();
        DefaultTableModel dtm=new DefaultTableModel();

        for(int i=1; i<columns; i++)
        {
            columnName.addElement(mtd.getColumnName(i));
        }
        dtm.setColumnIdentifiers(columnName);

        while (rs.next()) {
         for(int j=1; j<columns; j++){
              DataRows.addElement(rs.getString(j));
              //System.out.println(rs.getString(j));
         }
        }
        Enumeration e= DataRows.elements();
        while(e.hasMoreElements())
        {
               System.out.println(e.nextElement());
        }
        dtm.addRow(DataRows);

        myTable.setModel(dtm);
        dtm.fireTableDataChanged();
    } catch (SQLException e) {
        System.out.println("SQL Exception: "+ e.toString());
    } catch (ClassNotFoundException cE) {
        System.out.println("Class Not Found Exception: "+ cE.toString());
    }
}

问题是这只显示第一行。任何人都可以指导我吗?

1 个答案:

答案 0 :(得分:0)

您的代码中存在多个错误

检查你的while循环

while(rs.next())

如果它在正确的位置结束

您继续向同一DataRow添加元素。这不是为你的表创建一个新行。