import java.awt.*; import java.sql.*; import java.util.*; import javax.swing.*; import javax.swing.table.*; public class TableFromDatabase extends JFrame { public TableFromDatabase() { Vector columnNames = new Vector(); Vector data = new Vector(); try { // Connect to an Access Database String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; // String url = "jdbc:odbc:???"; // if using ODBC Data Source name String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/directory/???.mdb"; String userid = ""; String password = ""; Class.forName( driver ); Connection connection = DriverManager.getConnection( url, userid, password ); // Read data from a table String sql = "Select * from ???"; Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery( sql ); ResultSetMetaData md = rs.getMetaData(); int columns = md.getColumnCount(); // Get column names for (int i = 1; i <= columns; i++) { columnNames.addElement( md.getColumnLabel(i) ); } // Get row data while (rs.next()) { Vector row = new Vector(columns); for (int i = 1; i <= columns; i++) { row.addElement( rs.getObject(i) ); } data.addElement( row ); } rs.close(); stmt.close(); connection.close(); } catch(Exception e) { System.out.println( e ); } // Create table with database data DefaultTableModel model = new DefaultTableModel(data, columnNames) { @Override public Class getColumnClass(int column) { for (int row = 0; row < getRowCount(); row++) { Object o = getValueAt(row, column); if (o != null) { return o.getClass(); } } return Object.class; } }; JTable table = new JTable( model ); JScrollPane scrollPane = new JScrollPane( table ); getContentPane().add( scrollPane ); JPanel buttonPanel = new JPanel(); getContentPane().add( buttonPanel, BorderLayout.SOUTH ); } public static void main(String[] args) { TableFromDatabase frame = new TableFromDatabase(); frame.setDefaultCloseOperation( EXIT_ON_CLOSE ); frame.pack(); frame.setVisible(true); } }