2009-08-27 100 views

回答

6

A similar question that has been asked recently。 ResultSet當然不是一個直接的等價物,因爲它只能與數據庫的活動連接一起工作,而DataTable可以「脫機」使用。

從個人經驗來說,我認爲在Java中沒有直接的等價物(雖然沒有嘗試javax.sql.rowset.WebRowSet)。你要麼用普通的SQL去和java.sql.ResultSet是你的朋友。或者你使用一些像Hibernate,Cayenne,Toplink這樣的ORM工具來舉幾個例子。或者你建立自己的(不是我鼓勵這個,但我認爲已經成功完成了多個項目)。

2

考慮使用

java.sql.ResultSet 

Statement s = conn.createStatement(); 
ResultSet rs = s.executeQuery("select * from generic_table"); 
ResultSetMetaData md = rs.getMetaData(); 
+1

但在這裏,我需要遍歷,使用resultSet.next()。我不能說,給我第1欄的價值或給我(2,2) – Ajay 2009-08-27 13:22:37

1

否 - 不是在標準庫(即的Java API)。

1

我使用的解決方法是JTable。它沒有適當的DataTable的健壯的數據特徵,但它可以讓你獲取一些數據並將其綁定到具有某種結構的控件上。

class TableModel extends AbstractTableModel 
{ 
    String[] columnNames = {「FirstName」,」LastName」,」Title」}; 
    Object[][] rowData= {{‘John,」Smith」,」President」},{「John」,」Doe」,」Employee」}}; 

    public int getColumnCount() 
    { 
     return columnNames.length; 
    } 

    public int getRowCount() 
    { 
     return rowData.length; 
    } 

    public String getColumnName(int col) 
    { 
     return columnNames[col]; 
    } 

    public Object getValueAt(int row, int col) 
    { 
     return data[row][col]; 
    } 
} 

然後簡單地使用你:

JTable table = new JTable(new TableModel()); 

再次,這是快速,簡單,如果你正在處理大量的數據,我會建議使用合適的ORM工具。

3

給這個框架一個嘗試:

Casper Datasets

它是一個在內存中的數據集庫是通用的,也是類型安全的。可以:自動從關係查詢

  • 拉數據(或從任何其他編程源),
  • 問題複雜,鏈查詢對數據集,
  • 通過指定特定列的索引優化給定的數據集。

它易於使用且沒有任何重要的依賴關係。它也符合java.sql.ResultSet,所以它可以很容易地集成到任何現有的應用程序,查詢關係數據庫

0

從標準庫DefaultTableModel是很好的類。

ResultSet set = s.getResultSet(); 
     ResultSetMetaData metaData = set.getMetaData(); 
     int totalColumn = metaData.getColumnCount(); 
     Object[] dataRow = new Object[totalColumn]; 
     if(set!= null) 
     { 
      for(int i=1;i<=totalColumn;i++) 
      { 
       table.addColumn(metaData.getColumnName(i)); 
      } 
      while(set.next()) 
      { 
       for(int i=1;i<=totalColumn;i++) 
       { 
        dataRow[i-1] = set.getObject(i); 
       } 
       table.addRow(dataRow); 
      } 

     }