2009-08-27 32 views

Respuesta

6

A similar question that has been asked recently. ResultSet ciertamente no es un equivalente directo, ya que solo funciona con una conexión activa a la base de datos, mientras que una DataTable se puede usar "fuera de línea".

Por experiencia personal, diría que no existe un equivalente directo en Java (aunque no lo he intentado con javax.sql.rowset.WebRowSet). O vas con SQL simple y java.sql.ResultSet es tu amigo. O utiliza alguna herramienta ORM como Hibernate, Cayenne, Toplink para nombrar unos pocos. O construyes el tuyo (no es que lo anime, pero creo que en más de un proyecto se ha hecho con éxito).

2

considerar el uso de un

java.sql.ResultSet 

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

pero aquí, necesito recorrer, usando resultSet.next(). No puedo decir, dame los valores de la columna 1 o dame el valor en (2,2) – Ajay

1

No - no en las bibliotecas estándar (es decir, el API de Java).

1

Una solución alternativa que he usado es JTable. No tiene las características de datos robustas de una DataTable adecuada, pero le permitirá tomar algunos datos y vincularlos a un control con cierta estructura.

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

Y después de usar simplemente:

JTable table = new JTable(new TableModel()); 

De nuevo, esto es rápida y sencilla, y si se trata de grandes cantidades de datos, recomendaría el uso de una herramienta adecuada ORM.

3

Dale este marco una oportunidad:

Casper Datasets

Su biblioteca conjunto de datos en memoria que es genérico y también un tipo seguro. Puede:

  • datos Obtener automáticamente de consultas relacionales (o de cualquier otra fuente programática),
  • compleja cuestión, consultas encadenadas contra el conjunto de datos,
  • optimizar un determinado conjunto de datos mediante la especificación de índices en columnas particulares.

Es fácil de usar y no tiene dependencias importantes. También es compatible con java.sql.ResultSet, por lo que es posible integrarlo fácilmente en cualquier aplicación existente que consulte la base de datos relacional

0

de la biblioteca estándar DefaultTableModel es una buena clase.

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

     }