Java中是否存在C#DataTable等效项?
答案 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)
尝试使用此框架:
它是一个内存数据集库,它是通用的,也是类型安全的。你可以:
易于使用且没有任何重要依赖性。它还兼容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);
}
}