2009-08-27 1 views

ответ

6

A similar question that has been asked recently. ResultSet, безусловно, не является прямым эквивалентом, поскольку он работает только с активным подключением к базе данных, а DataTable может использоваться «в автономном режиме».

Из личного опыта я бы сказал, что в Java нет прямого эквивалента (не пробовал javax.sql.rowset.WebRowSet, хотя). Вы либо идете с простым SQL, а java.sql.ResultSet - ваш друг. Или вы используете какой-то инструмент ORM, такой как Hibernate, Cayenne, Toplink, чтобы назвать несколько. Или вы строите свои собственные (а не то, что я поощряю это, но я думаю, что более чем один проект был успешно выполнен).

2

Рассмотрим не используя

java.sql.ResultSet 

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

но здесь, мне нужно пройти, используя resultSet.next(). Я не могу сказать, дайте мне значения столбца 1 или дайте мне значение при (2,2) – Ajay

1

Нет - не в стандартных библиотеках (то есть в API Java).

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.

3

Дайте этой Рамочный попробовать:

Casper Datasets

Сво в памяти набора данных библиотеки, которая является общим, а также тип безопасности. Вы можете:

  • Напряжение данные автоматически из реляционных запросов (или из любого другого программного источника),
  • Issue комплекса, прикованные запросы к набору данных,
  • Оптимизации заданного набора данных, указав индексы отдельных столбцов.

Его прост в использовании и не имеет каких-либо значительных зависимостей. Он также совместим с java.sql.ResultSet, поэтому его можно легко интегрировать в любые существующие приложения, которые запрашивают реляционную базу данных.

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); 
      } 

     } 

 Смежные вопросы

  • Нет связанных вопросов^_^