Javaに同等のC#DataTableはありますか?
A 最近尋ねられた同様の質問 。 ResultSetは、データベースへのアクティブな接続でのみ機能し、DataTableは「オフライン」で使用できるため、直接同等ではありません。
個人的な経験から、Java(ただし、javax.sql.rowset.WebRowSet
は試していません)には直接同等のものはありません)。プレーンSQLを使用し、Java.sql.ResultSet
がまたは、Hibernate、Cayenne、ToplinkなどのORMツールを使用していくつか例を挙げます。または独自に作成します(これをお勧めするわけではありませんが、成功した複数のプロジェクトについて考えています)。
このフレームワークを試してみてください。
汎用でタイプセーフなメモリ内データセットライブラリです。あなたはできる:
その使いやすく、重要な依存関係はありません。また、Java.sql.ResultSetに準拠しているため、リレーショナルデータベースに対してクエリを実行する既存のアプリにこれを簡単に統合できます。
いいえ-標準ライブラリにはありません(つまり、Java API)。
の使用を検討してください
Java.sql.ResultSet
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("select * from generic_table");
ResultSetMetaData md = rs.getMetaData();
私が使用した回避策は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ツールを使用することをお勧めします。
標準ライブラリから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);
}
}