2012-09-03 61 views
0

我有一個關於我的JTable的問題,我不知道如何將我的數據庫中的String類型的讀取記錄存儲到多維數組中,比如Object [] [] data 。我想要做的是向JTable顯示我的數據庫記錄,我已經在dtabase中獲取記錄並將其存儲在我的字符串變量中。問題是如何將提取記錄存儲到Object的多維數組中,並將其用於我JTable中。來自數據庫的Java JTable結果

這裏是我用來獲取記錄代碼:

static class TableData{ 
    Object[][] data; 
    int count = 0; 
    Statement sql = null; 
    String query, user = "JEROME", pass = "Perbert101", driver = "oracle.jdbc.OracleDriver", conString = "jdbc:oracle:thin:@127.0.0.1:1521:XE"; 
    Connection con = null; 
    ResultSet rs = null; 
    TableData(){ 
     try{ 
      Class.forName(driver); 
     } 
     catch(ClassNotFoundException e){ 
      JOptionPane.showMessageDialog(null, "Problem Loading Driver"); 
     } 
     try{ 
      con = DriverManager.getConnection(conString, user, pass); 
      sql = con.createStatement(); 
      sql.executeQuery("SELECT * FROM INVENTORY"); 
      rs = sql.getResultSet(); 
      int key = 0; 
      String val = null, val1 = null, val2 = null, val3 = null, val4 = null, val5 = null; 
      System.out.println("Results: "); 
      while(rs.next()){ 


        key = rs.getInt(1); 
        if(rs.wasNull()){ 
         key = -1; 
        } 
        val = rs.getString(2); 
        if(rs.wasNull()){ 
         val = null; 
        } 
        val1 = rs.getString(3); 
        if(rs.wasNull()){ 
         val = null; 
        } 
        val2 = rs.getString(4); 
        if(rs.wasNull()){ 
         val = null; 
        } 

        val3 = rs.getString(5); 
        if(rs.wasNull()){ 
         val = null; 
        } 
        val4 = rs.getString(6); 
        if(rs.wasNull()){ 
         val = null; 
        } 
        val5 = rs.getString(7); 
        if(rs.wasNull()){ 
         val = null; 
        } 

       System.out.println("Key = " + key); 
       System.out.println("value = " + val); 
       System.out.println("value = " + val1); 
       System.out.println("value = " + val2); 
       System.out.println("value = " + val3); 
       System.out.println("value = " + val4); 
       System.out.println("value = " + val5); 

      } 


      sql.close(); 
      con.close(); 
     } 
     catch(SQLException e){ 
      JOptionPane.showMessageDialog(null, "Error Loading Database Data"); 
     } 

    } 
} 
//----------END------------ 
public static void main(String[] args){ 
    POSModel.TableData data = new POSModel.TableData(); 
} 
+0

你可能想接受一些答案... –

+0

是的,我是在Java上noob,它需要我約1小時學習如何獲得一些記錄,可以你幫我?我現在真的需要這個。 – Zyrax

回答

1

我建議你從數據庫中提取數據需要被存儲在數組(按列)第一...

Object[] rowData = new Object[7]; 
rowData[0] = key; 
rowData[1] = val; 
rowData[2] = val1; 
rowData[3] = val2; 
rowData[4] = val3; 
rowData[5] = val4; 
rowData[6] = val5; 

然後這需要存儲在某種行結構中,我會親自使用一個List。這個選擇的主要原因是,你可能不知道提前行,你會讀的次數......

List<Object[]> rowList = new ArrayList<Object[]>(25); 

// Process the resultset... 
// Create the column array from above... 

rowList.add(rowData); 

一旦你完成閱讀完所有的行,你需要轉換列表一個數組...

data = rowList.toArray(new Object[](rowList.size())); // I like to provide my own array 

同樣,你可以做...

data = new Object[rowList.size()][7]; 
rowList.toArray(data); 

而且,任何更方便......

現在你應該有一個二維陣列...

+0

我怎樣才能循環多維數組?這樣我就不需要輸入所有的抓取記錄。 – Zyrax

+0

列首先爲什麼?我的意思是它應該是網格格式。 – Zyrax

+0

對不起...輸入密鑰的方式:P - 請參閱更新... – MadProgrammer