2013-01-11 33 views
1

我想將存儲在我的數據庫中的數據填充到JTable中。我有一個println語句「記錄添加到數據庫」,它打印出18次,所以數據庫中的行數與打印語句的數量相匹配。然而,我在JTable中沒有顯示任何內容,我不知道錯誤在哪裏。JTable沒有填充來自MySQL的數據

代碼:

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); 
+0

您如何看待數據?你是否在其他地方遍歷Vector? – Randy

+0

您在上面的代碼中看到了JTable?你添加行到一個Vector,但沒有JTable在眼前 – radai

+0

哦,我看到好的,所以我現在應該向Jtable添加載體,或者有更簡單快捷的方法呢? –

回答

0

因此,解決辦法雖然它不是最好的,但它的工作原理,這將做我的現在。

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); 
    }