2012-04-13 1 views
0
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);  

ответ

1

У вас есть ошибка с вашим вектором. Подумайте о том, чтобы использовать что-то вроде:

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

2

Вы продолжаете добавлять к той же строке Vector. Попробуйте создать новый экземпляр для каждой итерации rs.next().

+0

Да, теперь я получаю его, как описано выше. и большое спасибо за помощь :) – senrulz