Java中的DataTable等价物

时间:2009-08-27 10:50:07

标签: c# java .net ado.net datatable

Java中是否存在C#DataTable等效项?

6 个答案:

答案 0 :(得分:7)

A similar question that has been asked recently。 ResultSet当然不是直接等效的,因为它只适用于与数据库的活动连接,而DataTable可以“离线”使用。

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

答案 1 :(得分:4)

尝试使用此框架:

Casper Datasets

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

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

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

答案 2 :(得分:1)

考虑使用

java.sql.ResultSet

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

答案 3 :(得分:1)

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

答案 4 :(得分: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工具。

答案 5 :(得分: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);
            }

        }