Visual Java Address Book Application which Accesses A MySQL Database

by Jim Krumm


import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.sql.*;

import java.sql.SQLException;

 

 

public class AddressBookMySql extends JFrame

{

   private DataPanel myDataPanel;

   private Connection dbconn=null;

   //Connection con = null;

   int numberPeople=0;

   //private static int numPeople=0;

   private static String info;

   private static JTextArea txtInfo=new JTextArea( 8, 40 ); //8 rows 40 cols needs to be here to speak

                                                            //across classes

       public AddressBookMySql()

       {

              super("This is my Phone Book which calls a database, La La La");

              GridLayout myGridLayout= new GridLayout(3,1); //3 rows 1 col allows 3 panels

              Container p = getContentPane();

              myDataPanel=new DataPanel();

               p.add(myDataPanel);

               myDataPanel.setLayout(myGridLayout);

               //Statement stmt;

               //Statement stmt2;

 

               //ResultSet rs;

               //ResultSet rs2;

               // Define URL of database server for

               // database named 'user' on the faure.

               String url;

        //*********************************

        try

         {

            System.out.println("bang");

             //url = "jdbc:mysql://localhost/test";

             url = "jdbc:odbc:myaddressbook4";

            //Class.forName ("com.mysql.jdbc.Driver").newInstance ();

            //url = "jdbc:mysql://localhost//myaddressbook4";

           

             Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );

             dbconn = DriverManager.getConnection (url, "root", "student");

             System.out.println("bang");

            

 

              //url ="jdbc:mysql://localhost/" +"test"+ "?user=root&password=" +"student"+ "&useUnicode=ue&characterEncoding=gb2312"; //original

            dbconn = DriverManager.getConnection( url );

            info="Connection successful\n";

      }

      catch ( ClassNotFoundException cnfex )           //yes 3 catches

      {

            cnfex.printStackTrace();

            info=info+"Connection unsuccessful\n" + cnfex.toString();

      }

      catch ( SQLException sqlex )

      {

            sqlex.printStackTrace();

            info=info+"Connection unsuccessful\n" +sqlex.toString();

      }

      catch ( Exception excp )

      {

            excp.printStackTrace();

            info=info+excp.toString();

      }

      //**********************************

 

        txtInfo.setText(info);   //sets connection information

              setSize(500,290);

              setVisible(true);

       }

       public static void main(String args[])

       {

              AddressBookMySql myAddressBookMySql= new AddressBookMySql();

              myAddressBookMySql.addWindowListener

              (

                     new WindowAdapter()

                     {

                           public void windowClosing(WindowEvent e)

                           {

                                  System.exit(0);

                           }

                     }

              );

       }

   //*******************************

   class DataPanel extends JPanel implements ActionListener

   {

           JLabel lblIDCap= new   JLabel("Record Number");

           JLabel lblLast=new JLabel("Last Name");

              JLabel lblFirst=new JLabel("First Name");

              JLabel lblPhone=new JLabel("Phone Number");

              //JTextArea txtInfo=new JTextArea();

              JLabel lblID=new JLabel("          "); //10 spaces

              JTextField  txtLast=new JTextField(10);

              JTextField  txtFirst=new JTextField(10);

              JTextField  txtPhone=new JTextField(10);

 

              JButton btnAdd=new JButton("Add Record");

              JButton btnFind=new JButton("Find Record");

              JButton btnDelete=new JButton("Delete Record");

              JButton btnUpdate=new JButton("Update Record");        //**

              JButton btnClear=new JButton("Clear");

              JButton btnExit=new JButton("Exit");

 

              public DataPanel()

              {

                     JPanel myPanel = new JPanel();

                     JPanel myPanel2 = new JPanel();

                     JPanel myPanel3 =new JPanel();                     //**

                     myPanel.setLayout(new GridLayout (4,2)); //4 rows 2 cols

                     myPanel2.setLayout(new GridLayout (2,3)); //2 rows 3 cols

                     myPanel3.setLayout(new GridLayout(1,1)); //1 row 1 col

                      add(myPanel);

                      add(myPanel2);

                      add(myPanel3);                                     //**

                     myPanel.add(lblIDCap);

                     myPanel.add(lblID);

                     myPanel.add(lblLast);

                     myPanel.add(txtLast);

                     myPanel.add(lblFirst);

                     myPanel.add(txtFirst);

                     myPanel.add(lblPhone);

                     myPanel.add(txtPhone);

                     myPanel2.add(btnAdd);

                     myPanel2.add(btnFind);

                     myPanel2.add(btnDelete);

                     myPanel2.add(btnUpdate);

                     myPanel2.add(btnClear);

                     myPanel2.add(btnExit);

                     myPanel3.add( new JScrollPane(txtInfo));           //**

                     //puts txtInfo on application and allows it to scroll

                     btnAdd.addActionListener(this);

                     btnFind.addActionListener(this);

                     btnUpdate.addActionListener(this);

                     btnClear.addActionListener(this);

                     btnExit.addActionListener(this);

                     btnDelete.addActionListener(this);

              }

              public void actionPerformed(ActionEvent event)

              {

                     String ID="";     //must initialize to ""

                     String Last="";

                     String First="";

                     String Phone="";

                     Object source=event.getSource();

                     ID=lblID.getText().trim();

                     lblID.setText(ID);

                     Last=txtLast.getText().trim();  //removes additional characters

                      txtLast.setText(Last);          //sets fields in their places

                      First=txtFirst.getText().trim();

                     txtFirst.setText(First);

                     Phone=txtPhone.getText().trim();

                     txtPhone.setText(Phone);

                     if (source.equals(btnAdd))

                     {

                       //********************************

                  try {

                        Statement statement = dbconn.createStatement();

                        if ( !Last.equals( "" ) &&

                              !First.equals( "" ) &&

                                    !Phone.equals("") )

                                    {

                               String temp = "INSERT INTO phonelistTable (" +

                                  "Last, First, " +

                                  "Phone" +

                                  ") VALUES ('" +

                                  Last   + "', '" +

                                  First  + "', '" +

                                  Phone  +  "')";

                                  txtInfo.append( "\nInserting: " +

                                  dbconn.nativeSQL( temp ) + "\n" );

                            int result = statement.executeUpdate( temp );

                            if ( result == 1 )

                            { //confirming insertion

                                 //txtInfo.append("\nInsertion successful\n");

                                 String query="";

                                 try

                                 {

                                   query = "SELECT * FROM phonelistTable WHERE First='" +

                                   First + "' AND Last= '" + Last + "'";

                                   ResultSet rs = statement.executeQuery( query );

                                  rs.next();

                                    lblID.setText(String.valueOf(rs.getInt(1)));

                                 }

                                catch ( SQLException sqlex )

                                {

                                   txtInfo.append( sqlex.toString() );

                                }

                           }

                           else

                           {

                               txtInfo.append( "\nInsertion failed\n" );

                               txtFirst.setText( "" );

                               txtLast.setText( "" );

                               txtPhone.setText( "" );

                            }

                          }

                          else

                            txtInfo.append( "\nEnter last, first, and " +

                               "phone, then press Add\n" );

                         statement.close();

                      }

                      catch ( SQLException sqlex )

                      {

                         txtInfo.append( sqlex.toString() );

                            txtFirst.setText("Entry already exists -- re-enter");

                      }

                  }

                //****************************

              if (source.equals(btnFind))

              {

                     try

                     {

                       if ( !Last.equals("") && !First.equals(""))

                       {

 

                              Statement statement =dbconn.createStatement();

                              String query = "SELECT * FROM phonelistTable " +

                                 "WHERE First = '" +

                                 First + "'"+

                                 " AND Last = '" +

                                 Last + "'";

                                 txtInfo.append( "\nSending query: "   +

                                    dbconn.nativeSQL( query ) + "\n" );

                                 ResultSet rs = statement.executeQuery( query );

                                 display( rs );

                                 statement.close();

                        }

                        else

                          txtLast.setText("Enter last name and First name"+

                                           " then press Find" );

                     }

                     catch ( SQLException sqlex )

                     {

                             txtInfo.append( sqlex.toString() + sqlex.getMessage() );

                     }

               }

   //******************************************

    if (source.equals(btnUpdate))

    {

              try

              {

                  Statement statement = dbconn.createStatement();

                  if ( ! lblID.getText().equals(""))

                  {

                           String temp = "UPDATE phonelistTable SET " +

                             "First='" + txtFirst.getText() +

                             "', Last='" + txtLast.getText() +

                             "', Phone='" + txtPhone.getText() +

                             "' WHERE id=" + lblID.getText();

                             txtInfo.append( "\nUpdating: " +

                                dbconn.nativeSQL( temp ) + "\n" );

                                 int result = statement.executeUpdate( temp );

                                 if ( result == 1 )

                             txtInfo.append( "\nUpdate successful\n" );

                          else {

                             txtInfo.append( "\nUpdate failed\n" );

                             txtFirst.setText( "" );

                             txtLast.setText( "" );

                             txtPhone.setText( "" );

                          }

                        statement.close();

                       }

                       else

                          txtInfo.append( "\nYou may only update an " +

                                         "existing record. Use Find to " +

                                         "\nlocate the record, then " +

                                         "modify the information and " +

                                         "\npress Update.\n" );

                    }

                    catch ( SQLException sqlex ) {

                         txtInfo.append( sqlex.toString() );

             }

         }

         //********************************************

         if (source.equals(btnDelete))

         {

              try

              {

                         Statement statement = dbconn.createStatement();

                         if ( ! lblID.getText().equals(""))

                         {

                                    System.out.print(lblID.getText());

                                     String temp = "DELETE from phonelistTable " +

                                               " WHERE id=" + lblID.getText();

                                               txtInfo.append( "\nDeleting: " +

                                               dbconn.nativeSQL( temp ) + "\n" );

 

                                  int result = statement.executeUpdate( temp );

                                   if ( result == 1 )

                                 {

                                         txtInfo.append( "\nDeletion successful\n" );

                               }

                               else

                            {

                                  txtInfo.append( "\nDeletion failed\n" );

                                  txtFirst.setText( "" );

                                  txtLast.setText( "" );

                                   txtPhone.setText( "" );

                             }

                             statement.close();

                      }

                       else

                        txtInfo.append( "\nYou may only delete an " +

                        "existing record. Use Find to " +

                        "\nlocate the record, then " +

                       "press delete.\n" );

            }

             catch ( SQLException sqlex )

             {

                       txtInfo.append( sqlex.toString() );

             }

          }

           //********************************************

          if (source.equals(btnClear))

          {

              txtLast.setText("");

              txtFirst.setText("");

              txtPhone.setText("");

              lblID.setText("");

          }

           //********************************************

           if (source.equals(btnExit))

           {

                           System.exit(0);

           }

          }

              //********************************************

          public void display( ResultSet rs )

          {

             try

             {

                rs.next();

                int recordNumber = rs.getInt( 1 );

                if ( recordNumber != 0 )

                {

                   lblID.setText( String.valueOf(recordNumber) );

                   txtLast.setText( rs.getString( 2 ) ); //2 is second column in database

                   txtFirst.setText( rs.getString( 3 ) ); //3 is third column in database

                   txtPhone.setText( rs.getString( 4 ) );

                }

                else

                {

                        txtInfo.append( "\nNo record found\n" );

                }

            }

            catch ( SQLException sqlex )

            {

                     txtInfo.append( "\n*** Phone Number Not In Database ***\n" );

            }

         }

   }

}