1  import javax.swing.*;
  2  import java.awt.*;
  3  import java.awt.event.*;
  4  import javax.sql.RowSet;
  5  import com.sun.rowset.CachedRowSetImpl;
  6  
  7  public class TestTableEditor extends JApplet {
  8    private JComboBox jcboDriver = new JComboBox(new String[] {
  9      "sun.jdbc.odbc.JdbcOdbcDriver",
 10      "com.mysql.jdbc.Driver",
 11      "oracle.jdbc.driver.OracleDriver"
 12    });
 13    private JComboBox jcboURL = new JComboBox(new String[] {
 14      "jdbc:odbc:exampleMDBDataSource",
 15      "jdbc:mysql://localhost/javabook",
 16      "jdbc:oracle:thin:@liang.armstrong.edu:1521:orcl"
 17    });
 18  
 19    private JButton jbtConnect =
 20      new JButton("Connect to DB & Get Table");
 21    private JTextField jtfUserName = new JTextField();
 22    private JPasswordField jpfPassword = new JPasswordField();
 23    private JTextField jtfTableName = new JTextField();
 24    private TableEditor tableEditor1 = new TableEditor();
 25    private JLabel jlblStatus = new JLabel();
 26  
 27    /** Creates new form TestTableEditor */
 28    public TestTableEditor() {
 29      JPanel jPanel1 = new JPanel(new GridLayout(5, 0));
 30      jPanel1.add(jcboDriver);
 31      jPanel1.add(jcboURL);
 32      jPanel1.add(jtfUserName);
 33      jPanel1.add(jpfPassword);
 34      jPanel1.add(jtfTableName);
 35  
 36      JPanel jPanel2 = new JPanel(new GridLayout(5, 0));
 37      jPanel2.add(new JLabel("JDBC Driver"));
 38      jPanel2.add(new JLabel("Database URL"));
 39      jPanel2.add(new JLabel("Username"));
 40      jPanel2.add(new JLabel("Password"));
 41      jPanel2.add(new JLabel("Table Name"));
 42  
 43      JPanel jPanel3 = new JPanel(new BorderLayout());
 44      jPanel3.add(jbtConnect, BorderLayout.SOUTH);
 45      jPanel3.add(jPanel2, BorderLayout.WEST);
 46      jPanel3.add(jPanel1, BorderLayout.CENTER);
 47      tableEditor1.setPreferredSize(new Dimension(400, 200));
 48  
 49      jcboURL.setEditable(true);
 50      jcboDriver.setEditable(true);
 51  
 52      add(new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
 53        jPanel3, tableEditor1), BorderLayout.CENTER);
 54      add(jlblStatus, BorderLayout.SOUTH);
 55  
 56      jbtConnect.addActionListener(new ActionListener() {
 57        @Override
 58        public void actionPerformed(ActionEvent evt) {
 59          try {
 60            // Connect to the database and create a rowset
 61            Class.forName(((String)jcboDriver.getSelectedItem()).trim());
 62            RowSet rowSet = new CachedRowSetImpl();
 63            rowSet.setUrl(((String)jcboURL.getSelectedItem()).trim());
 64            rowSet.setUsername(jtfUserName.getText().trim());
 65            rowSet.setPassword(new String(jpfPassword.getPassword()));
 66            rowSet.setCommand("select * from " +
 67              jtfTableName.getText().trim());
 68            rowSet.execute();
 69            rowSet.beforeFirst();
 70            tableEditor1.setRowSet(rowSet);
 71          }
 72          catch (Exception ex) {
 73            jlblStatus.setText(ex.toString());
 74          }
 75        }
 76      });
 77    }
 78  
 79    /** Main method */
 80    public static void main(String[] args) {
 81      TestTableEditor applet = new TestTableEditor();
 82      JFrame frame = new JFrame();
 83      frame.setDefaultCloseOperation(3);
 84      frame.setTitle("TestTableEditor");
 85      frame.add(applet, BorderLayout.CENTER);
 86      applet.init();
 87      applet.start();
 88      frame.pack();
 89      frame.setLocationRelativeTo(null);
 90      frame.setVisible(true);
 91    }
 92  }