Java中的DataTable等价物

Java中是否有C#DataTable等价物?

最近提出的类似问题 。 ResultSet当然不是直接等效的,因为它只适用于与数据库的活动连接,而DataTable可以“脱机”使用。

根据个人经验,我会说在Java中没有直接的等价物(尽管没有尝试过javax.sql.rowset.WebRowSet )。 你要么使用普通的SQL,而java.sql.ResultSet就是你的朋友。 或者您使用一些ORM工具,如Hibernate,Cayenne,Toplink等等。 或者你建立自己的(不是我鼓励这个,但我认为已经成功完成了多个项目)。

试试这个框架:

Casper数据集

它是一个内存数据集库,它是通用的,也是类型安全的。 您可以:

  • 从关系查询(或从任何其他程序源)自动提取数据,
  • 针对数据集发出复杂的链式查询,
  • 通过指定特定列的索引来优化给定数据集。

它易于使用,没有任何重要的依赖性。 它还兼容java.sql.ResultSet,因此可以轻松地将其集成到任何查询关系数据库的现有应用程序中

考虑使用

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

不 – 不在标准库(即Java API)中。

我使用的解决方法是JTable。 它没有正确的DataTable的强大数据function,但它允许您获取一些数据并将其绑定到具有某种结构的控件。

 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工具。

从标准库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); } }