2013-01-11 5 views
1

내 데이터베이스에 저장된 데이터를 JTable에 채우려고합니다. 나는 println 문 "db에 레코드 추가"를 가지고 있으며, db의 행 수가 인쇄 된 명령문의 수와 일치하도록 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

데이터를 어떻게 보시겠습니까? 당신은 다른 곳에서 벡터를 반복합니까? – Randy

+0

위의 코드에서 JTable을 볼 수있는 곳은 어디입니까? youre 벡터에 행을 추가하지만, 보이는 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); 
    } 
관련 문제