2009-08-27 37 views

Trả lời

6

A similar question that has been asked recently. ResultSet chắc chắn không phải là một tương đương trực tiếp vì nó chỉ hoạt động với một kết nối hoạt động với cơ sở dữ liệu trong khi một DataTable có thể được sử dụng "offline".

Từ trải nghiệm cá nhân tôi có thể nói không có tương đương trực tiếp trong Java (tuy nhiên, chưa thử javax.sql.rowset.WebRowSet). Bạn có thể đi với SQL đơn giản và java.sql.ResultSet là bạn của bạn. Hoặc bạn sử dụng một số công cụ ORM như Hibernate, Cayenne, Toplink để đặt tên một vài. Hoặc bạn xây dựng của riêng bạn (không phải là tôi khuyến khích điều này, nhưng tôi nghĩ về nhiều hơn một dự án đã được thực hiện thành công).

2

Xem xét sử dụng một

java.sql.ResultSet 

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

nhưng ở đây, tôi cần duyệt qua, sử dụng resultSet.next(). Tôi không thể nói, cho tôi các giá trị của cột 1 hoặc cho tôi giá trị tại (2,2) – Ajay

1

Không - không có trong thư viện chuẩn (ví dụ: các Java API).

1

Cách giải quyết mà tôi đã sử dụng là JTable. Nó không có các tính năng dữ liệu mạnh mẽ của một DataTable thích hợp nhưng nó sẽ cho phép bạn lấy một số dữ liệu và liên kết nó với một điều khiển với một số cấu trúc.

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

Và sau đó sử dụng bạn chỉ cần:

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

Một lần nữa, đây là nhanh chóng và đơn giản và nếu bạn đang đối phó với một lượng lớn dữ liệu tôi sẽ khuyên bạn sử dụng một công cụ ORM thích hợp.

3

Cho khuôn khổ này thử xem:

Casper Datasets

một của nó trong bộ nhớ dữ liệu thư viện đó là chung chung và cũng là loại an toàn. Bạn có thể:

  • dữ liệu Pull tự động từ các truy vấn quan hệ (hoặc từ bất kỳ nguồn chương trình khác),
  • Issue phức tạp, thắc mắc xích chống lại các tập dữ liệu,
  • Tối ưu hóa một tập dữ liệu được bằng cách xác định các chỉ số trên các cột cụ thể.

Dễ sử dụng và không có bất kỳ phụ thuộc đáng kể nào. Nó cũng tương thích với java.sql.ResultSet, vì vậy có thể tích hợp nó dễ dàng vào bất kỳ ứng dụng hiện có nào truy vấn cơ sở dữ liệu quan hệ

0

Từ thư viện chuẩn DefaultTableModel là lớp tốt.

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

     }