// Sample Database Interface program import java.sql.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.util.*; import java.text.*; public class SyllabTest extends JFrame { private DataPanel screenvar; private JTextArea msgout; private Connection dbconn; public SyllabTest() { super( "SYLLABUSES TEST PROGRAM" ); // Set up GUI environment Container p = getContentPane(); screenvar = new DataPanel(); msgout = new JTextArea( 8, 40 ); p.setLayout( new FlowLayout() ); p.add( new JScrollPane( screenvar ) ); p.add( new JScrollPane(msgout) ); // Set up database connection try { String url = "jdbc:odbc:TestDB"; Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); dbconn = DriverManager.getConnection( url ); msgout.append( "Connection successful\n" ); } catch ( ClassNotFoundException cnfex ) { // process ClassNotFoundExceptions here cnfex.printStackTrace(); msgout.append( "Connection unsuccessful\n" + cnfex.toString() ); } catch ( SQLException sqlex ) { // process SQLExceptions here sqlex.printStackTrace(); msgout.append( "Connection unsuccessful\n" + sqlex.toString() ); } catch ( Exception excp ) { // process remaining Exceptions here excp.printStackTrace(); msgout.append( excp.toString() ); } // Complete GUI ButtonPanel controls = new ButtonPanel( dbconn, screenvar, msgout); p.add( controls ); setSize( 500, 425 ); show(); } public static void main( String args[] ) { SyllabTest syl = new SyllabTest(); syl.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.exit( 0 ); } } ); } } class AddRecord implements ActionListener { private DataPanel screenvar; private JTextArea msgout; private Connection dbconn; public AddRecord( Connection dbc, DataPanel scv, JTextArea msg ) { dbconn = dbc; screenvar = scv; msgout = msg; } public void actionPerformed( ActionEvent e ) { try { Statement statement = dbconn.createStatement(); // strip out non-numerics from phone number String numstrg = new String(); for (int i = 0; i < screenvar.course_id.getText().length(); i++) { if ( screenvar.course_id.getText().charAt(i)>='0' && screenvar.course_id.getText().charAt(i)<='9') { numstrg += screenvar.course_id.getText().substring(i,i+1); } } if ( !screenvar.course_e.getText().equals( "" ) && !screenvar.course_j.getText().equals( "" ) && !numstrg.equals("") ) { String query = "INSERT INTO Table1 (" + "course_j, course_e, course_url, inst_name, " + "department, inst_hp, tel_no, " + "email, course_id" + ") VALUES ('" + screenvar.course_j.getText() + "', '" + screenvar.course_e.getText() + "', '" + screenvar.course_url.getText() + "', '" + screenvar.inst_name.getText() + "', '" + screenvar.department.getText() + "', '" + screenvar.inst_hp.getText() + "', '" + screenvar.tel_no.getText() + "', '" + screenvar.email.getText() + "', '" + numstrg + "')"; msgout.append( "\nSending query: " + dbconn.nativeSQL( query ) + "\n" ); int result = statement.executeUpdate( query ); if ( result == 1 ){ // read just inserted record to obtain id field msgout.append( "\nInsertion successful\n" ); try { query = "SELECT * FROM Table1 WHERE course_id='" + numstrg + "'"; ResultSet rs = statement.executeQuery( query ); rs.next(); screenvar.id.setText(String.valueOf(rs.getInt(1))); } catch ( SQLException sqlex ) { msgout.append( sqlex.toString() ); } } else { msgout.append( "\nInsertion failed\n" ); screenvar.course_j.setText( "" ); screenvar.course_e.setText( "" ); screenvar.course_url.setText( "" ); screenvar.inst_name.setText( "" ); screenvar.department.setText( "" ); screenvar.inst_hp.setText( "" ); screenvar.tel_no.setText( "" ); screenvar.email.setText( "" ); screenvar.course_id.setText( "" ); } } else msgout.append( "\nEnter at least course_j, course_e, and " + "course_id, then press Add button\n" ); statement.close(); } catch ( SQLException sqlex ) { msgout.append( sqlex.toString() ); screenvar.course_id.setText("Course ID already exists -- reenter"); } } } class FindRecord implements ActionListener { private DataPanel screenvar; private JTextArea msgout; private Connection dbconn; public FindRecord( Connection dbc, DataPanel scv, JTextArea msg ) { dbconn = dbc; screenvar = scv; msgout = msg; } public void actionPerformed( ActionEvent e ) { try { // strip out non-numerics from course_id String numstrg = new String(); for (int i = 0; i < screenvar.course_id.getText().length(); i++){ if ( screenvar.course_id.getText().charAt(i)>='0' && screenvar.course_id.getText().charAt(i)<='9') { numstrg += screenvar.course_id.getText().substring(i,i+1); } } if ( !numstrg.equals( "" ) ) { Statement statement =dbconn.createStatement(); String query = "SELECT * FROM Table1 " + "WHERE course_id = '" + numstrg + "'"; msgout.append( "\nSending query: " + dbconn.nativeSQL( query ) + "\n" ); ResultSet rs = statement.executeQuery( query ); display( rs ); statement.close(); } else screenvar.course_id.setText( "Enter course_id then press Find" ); } catch ( SQLException sqlex ) { msgout.append( sqlex.toString() + sqlex.getMessage() ); } } // Display results of query public void display( ResultSet rs ) { try { rs.next(); int recordNumber = rs.getInt( 1 ); if ( recordNumber != 0 ) { screenvar.id.setText( String.valueOf(recordNumber) ); screenvar.course_j.setText( rs.getString( 2 ) ); screenvar.course_e.setText( rs.getString( 3 ) ); screenvar.course_url.setText( rs.getString( 4 ) ); screenvar.inst_name.setText( rs.getString( 5 ) ); screenvar.department.setText( rs.getString( 6 ) ); screenvar.inst_hp.setText( rs.getString( 7 ) ); screenvar.tel_no.setText( rs.getString( 8 ) ); screenvar.email.setText( rs.getString( 9 ) ); screenvar.course_id.setText( rs.getString( 10 ) ); } else msgout.append( "\nNo record found\n" ); } catch ( SQLException sqlex ) { msgout.append( "\n*** Course Not Recorded In Database ***\n" ); } } } class UpdateRecord implements ActionListener { private DataPanel screenvar; private JTextArea msgout; private Connection dbconn; public UpdateRecord( Connection dbc, DataPanel scv, JTextArea msg ) { dbconn = dbc; screenvar = scv; msgout = msg; } public void actionPerformed( ActionEvent e ) { try { Statement statement = dbconn.createStatement(); if ( ! screenvar.id.getText().equals( "" ) ) { // strip out non-numerics from course_id String numstrg = new String(); for (int i = 0; i < screenvar.course_id.getText().length(); i++) { if ( screenvar.course_id.getText().charAt(i)>='0' && screenvar.course_id.getText().charAt(i)<='9') { numstrg += screenvar.course_id.getText().substring(i,i+1); } } String query = "UPDATE Table1 SET " + "course_j='" + screenvar.course_j.getText() + "', course_e='" + screenvar.course_e.getText() + "', course_url='" + screenvar.course_url.getText() + "', inst_name='" + screenvar.inst_name.getText() + "', department='" + screenvar.department.getText() + "', inst_hp='" + screenvar.inst_hp.getText() + "', tel_no='" + screenvar.tel_no.getText() + "', email='" + screenvar.email.getText() + "', course_id='" + numstrg + "' WHERE id=" + screenvar.id.getText(); msgout.append( "\nSending query: " + dbconn.nativeSQL( query ) + "\n" ); int result = statement.executeUpdate( query ); if ( result == 1 ) msgout.append( "\nUpdate successful\n" ); else { msgout.append( "\nUpdate failed\n" ); screenvar.course_j.setText( "" ); screenvar.course_e.setText( "" ); screenvar.course_url.setText( "" ); screenvar.inst_name.setText( "" ); screenvar.department.setText( "" ); screenvar.inst_hp.setText( "" ); screenvar.tel_no.setText( "" ); screenvar.email.setText( "" ); screenvar.course_id.setText( "" ); } statement.close(); } else msgout.append( "\nYou may only update an " + "existing record. Use Find to " + "locate the record, then " + "modify the information and " + "press Update.\n" ); } catch ( SQLException sqlex ) { msgout.append( sqlex.toString() ); } } } class DataPanel extends JPanel { JTextField id, course_j, course_e, course_url, course_id, inst_name, department, inst_hp, tel_no, email; JLabel lcourse_j, lcourse_e, lcourse_url, lcourse_id, linst_name, ldepartment, linst_hp, ltel_no, lemail; public DataPanel() { // Label panel JPanel labelPanel = new JPanel(); labelPanel.setLayout( new GridLayout( 9, 1 ) ); lcourse_j = new JLabel( "Course Name (Japanese):", 0 ); labelPanel.add( lcourse_j); lcourse_e = new JLabel( "Course Name (English):", 0 ); labelPanel.add( lcourse_e); lcourse_id = new JLabel( "Course ID:", 0 ); labelPanel.add( lcourse_id); lcourse_url = new JLabel( "Course URL:", 0 ); labelPanel.add( lcourse_url); linst_name = new JLabel( "Instructor Name:", 0 ); labelPanel.add( linst_name); ldepartment = new JLabel( "Department:", 0 ); labelPanel.add( ldepartment); linst_hp = new JLabel( "Instructor Homepage:", 0 ); labelPanel.add( linst_hp); ltel_no = new JLabel( "Telephone:", 0 ); labelPanel.add( ltel_no); lemail = new JLabel( "Email:", 0 ); labelPanel.add( lemail); // TextField panel JPanel screenvarPanel = new JPanel(); screenvarPanel.setLayout( new GridLayout( 9, 1 ) ); id = new JTextField( 20) ; course_j = new JTextField( 20 ); screenvarPanel.add( course_j ); course_e = new JTextField( 20 ); screenvarPanel.add( course_e ); course_id = new JTextField("Enter number-click Find", 20); screenvarPanel.add( course_id ); course_url = new JTextField( 20 ); screenvarPanel.add( course_url ); inst_name = new JTextField( 20 ); screenvarPanel.add( inst_name ); department = new JTextField( 20 ); screenvarPanel.add( department ); inst_hp = new JTextField( 20 ); screenvarPanel.add( inst_hp ); tel_no = new JTextField( 20 ); screenvarPanel.add( tel_no ); email = new JTextField( 20 ); screenvarPanel.add( email ); // Accessibility Section - relate labels and text fields lcourse_j.setLabelFor( course_j ); lcourse_e.setLabelFor( course_e ); lcourse_id.setLabelFor( course_id ); lcourse_url.setLabelFor( course_url ); linst_name.setLabelFor( inst_name ); ldepartment.setLabelFor( department ); linst_hp.setLabelFor( inst_hp ); ltel_no.setLabelFor( tel_no ); lemail.setLabelFor( email ); setLayout( new GridLayout( 1, 2 ) ); add( labelPanel ); add( screenvarPanel ); } } class ButtonPanel extends JPanel { public ButtonPanel( Connection dbc, DataPanel scv, JTextArea msg ) { setLayout( new GridLayout( 1, 4 ) ); JButton findName = new JButton( "Find" ); findName.addActionListener( new FindRecord( dbc, scv, msg ) ); add( findName ); JButton addName = new JButton( "Add" ); addName.addActionListener( new AddRecord( dbc, scv, msg ) ); add( addName ); JButton updateName = new JButton( "Update" ); updateName.addActionListener( new UpdateRecord( dbc, scv, msg ) ); add( updateName ); JButton clear = new JButton( "Clear" ); clear.addActionListener( new Clearscreenvar( scv ) ); add( clear ); } } class Clearscreenvar implements ActionListener { private DataPanel screenvar; public Clearscreenvar( DataPanel scv ) { screenvar = scv; } public void actionPerformed( ActionEvent e ) { screenvar.id.setText( "" ); screenvar.course_j.setText( "" ); screenvar.course_e.setText( "" ); screenvar.course_url.setText( "" ); screenvar.inst_name.setText( "" ); screenvar.department.setText( "" ); screenvar.inst_hp.setText( "" ); screenvar.tel_no.setText( "" ); screenvar.email.setText( "" ); screenvar.course_id.setText( "" ); } }