Есть ли эквивалент C# DataTable в Java?эквивалент DataTable в Java
ответ
A similar question that has been asked recently. ResultSet, безусловно, не является прямым эквивалентом, поскольку он работает только с активным подключением к базе данных, а DataTable может использоваться «в автономном режиме».
Из личного опыта я бы сказал, что в Java нет прямого эквивалента (не пробовал javax.sql.rowset.WebRowSet
, хотя). Вы либо идете с простым SQL, а java.sql.ResultSet
- ваш друг. Или вы используете какой-то инструмент ORM, такой как Hibernate, Cayenne, Toplink, чтобы назвать несколько. Или вы строите свои собственные (а не то, что я поощряю это, но я думаю, что более чем один проект был успешно выполнен).
Рассмотрим не используя
java.sql.ResultSet
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("select * from generic_table");
ResultSetMetaData md = rs.getMetaData();
Нет - не в стандартных библиотеках (то есть в API Java).
Обходной путь, который я использовал, - 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.
Дайте этой Рамочный попробовать:
Сво в памяти набора данных библиотеки, которая является общим, а также тип безопасности. Вы можете:
- Напряжение данные автоматически из реляционных запросов (или из любого другого программного источника),
- Issue комплекса, прикованные запросы к набору данных,
- Оптимизации заданного набора данных, указав индексы отдельных столбцов.
Его прост в использовании и не имеет каких-либо значительных зависимостей. Он также совместим с java.sql.ResultSet, поэтому его можно легко интегрировать в любые существующие приложения, которые запрашивают реляционную базу данных.
Из стандартной библиотеки 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);
}
}
но здесь, мне нужно пройти, используя resultSet.next(). Я не могу сказать, дайте мне значения столбца 1 или дайте мне значение при (2,2) – Ajay