检索MySQL数据到JTable在Netbeans的

问题描述:

I used this coding to retrieve the Mysql data to the JTable.but it returns only the first data row of the relevant table of the database but then again it count the number of rows correctly and all it returns is same copy of the first row equal to the row count. 

我是新来的Java和NetBeans环境,因此,如果有人能帮助我解决这个问题,我会非常感激和感谢你提前:)检索MySQL数据到JTable在Netbeans的

Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost/data",   "root", "1122");  
    Statement stat = (Statement) con.createStatement(); 
    stat.executeQuery("select * from reserve;"); 
    ResultSet rs=stat.getResultSet(); 
    ResultSetMetaData md = rs.getMetaData(); 
    int columnCount = md.getColumnCount(); 
    Vector data=new Vector(); 
    Vector columnNames= new Vector(); 
    Vector row = new Vector(columnCount); 

    for(int i=1;i<=columnCount;i++){ 
     columnNames.addElement(md.getColumnName(i)); 
    } 
    while(rs.next()){ 
    for(int i=1; i<=columnCount; i++){ 
    row.addElement(rs.getObject(i)); 
    }  
    data.addElement(row); 
    }   
    DefaultTableModel model = new DefaultTableModel(data, columnNames); 
    jTable1.setModel(model);  

您的向量出现错误。考虑使用类似的东西:

Vector data = new Vector(columnCount); 
    Vector row = new Vector(columnCount); 
    Vector columnNames = new Vector(columnCount); 


    for (int i = 1; i <= columnCount; i++) { 
     columnNames.addElement(md.getColumnName(i)); 
    } 
    while (rs.next()) { 
     for (int i = 1; i <= columnCount; i++) { 
      row.addElement(rs.getObject(i)); 

     } 
     data.addElement(row); 
     row = new Vector(columnCount); // Create a new row Vector 
    } 
    DefaultTableModel model = new DefaultTableModel(data, columnNames); 
    jTable1.setModel(model);  
+0

非常感谢你的快速反应:),它的工作!再次感谢你! – senrulz 2012-04-13 15:09:41

您继续添加到相同的矢量行。尝试为rs.next()的每次迭代创建一个新实例。

+0

是啊现在我明白了,就像上面的答案解释!并非常感谢你的帮助:) – senrulz 2012-04-13 15:11:07