Link to home
Start Free TrialLog in
Avatar of mcowman
mcowman

asked on

Problem with Listener for an SQL statement

Hi
In the below program, when you click on the "ok" button, an SQL statement is supposed to run and add whatever info you typed into a database. It compiles fine, but when I get to click the button it gives the error message.

Java.lang.nullpointerexception
It does not even get to the SQL part so it must be the listener
I have include the code in its entirety  and below that the problem area, Can any one tell me where I'm going wrong????  Thanks!!!

 

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.sql.*;
import java.net.*;


class Test extends JFrame{ //class open
     //Step 2:: Global definitions of Panels
     JPanel z1;
     JPanel m1;
     JPanel a1;
     Container cont;

     // Global defintion of text fields/buttons/strings etc..
     private JButton b1,b2,b3,b4,b5;
     private JLabel l1,l2,l3,addmemberlabel2,addmemberlabel3,addmemberlabel4,addmemberlabel5,addmemberlabel6,addmemberlabel7,addmemberlabel8,addmemberlabel9,addmemberlabel10,addmemberlabel11;
     private JTextField t1,t2,addmembertfield1,addmembertfield2,addmembertfield3,addmembertfield4,addmembertfield5,addmembertfield6,addmembertfield7,addmembertfield8,addmembertfield9,addmembertfield10,addmembertfield11;
     private String username,password,passwordCpr,firstname,lastname,address,town,county,height,phone,age,gender,datereg,memberid;       




          //needed to connect to database
          boolean databaseConnect= false;
          private java.sql.Connection con=null;


     // Constructor
     public Test()
     { // constructor open
               // set title of frame
               setTitle("Technofit");
               // Set Size of Frame (default is 0,0)
               setSize(200,350);
               //set location of Frame (default is 0,0 - top left corner)    
               setLocation(10,100);
               // Calls another java program stored in same folder and applies it to this program
               WindowUtilities.setNativeLookAndFeel();
               // calls the databaseConnect function/method
               databaseConnect();

               //Step 3:: initialise panels
               m1 = new JPanel();
               a1 = new JPanel();
               z1 = new JPanel();

                    //create button
                    b2 = new JButton("Login");
                    //create labels
                    l2 = new JLabel("Username");
                    l3 = new JLabel("Password");
                    // create texfields
                    t1 = new JTextField(15);
                    t2 = new JTextField(15);

                    //add button as Listener
                    b2.addActionListener(new MemberScreen(getContentPane()));
                    //add button/texfields/labels to panel
                    z1.add(l2);
                    z1.add(t1);
                    z1.add(l3);
                    z1.add(t2);
                    z1.add(b2);



                    // create button
                          b1 = new JButton("Add Member ");
                   
                          // add button as an event listener
                          b1.addActionListener(new MemberAddScreen(getContentPane()));
               
                    // add buttons to current panel
                    m1.add(b1);
                   
                   

                          // create button
                          b4 = new JButton("OK ");
                          b5 = new JButton("Logout");
                          // add button as an event listener
                          b4.addActionListener(new MemberaddDetails(getContentPane()));
                          b5.addActionListener(new Logout());


                    // create labels/textfields
                    l1 = new JLabel("Firstname ");
                    addmemberlabel2 = new JLabel("Lastname");
                    addmemberlabel3 = new JLabel("Address1 ");
                    addmemberlabel4 = new JLabel("Town ");
                    addmemberlabel5 = new JLabel("County ");
                    addmemberlabel6 = new JLabel("Height ");
                    addmemberlabel7 = new JLabel("phone no ");
                    addmemberlabel8 = new JLabel("Age ");
                    addmemberlabel9 = new JLabel("Gender");
                    addmemberlabel10= new JLabel("Date Registered");
                addmemberlabel11 = new JLabel("Member ID");      
                     JTextField addmembertfield1  = new JTextField(15);
                    JTextField addmembertfield2  = new JTextField(15);
                    JTextField addmembertfield3  = new JTextField(15);
                    JTextField addmembertfield4  = new JTextField(15);
                    JTextField addmembertfield5  = new JTextField(15);
                    JTextField addmembertfield6  = new JTextField(15);
                    JTextField addmembertfield7  = new JTextField(15);
                    JTextField addmembertfield8  = new JTextField(15);
                    JTextField addmembertfield9  = new JTextField(15);
                    JTextField addmembertfield10  = new JTextField(6);
                JTextField addmembertfield11  = new JTextField(15);
      


                    //add buttons,texfields to panel a1
                    a1.add(l1);
                    a1.add(addmembertfield1);
                    a1.add(addmemberlabel2);
                    a1.add(addmembertfield2);
                    a1.add(addmemberlabel3);
                    a1.add(addmembertfield3);
                    a1.add(addmemberlabel4);
                    a1.add(addmembertfield4);
                    a1.add(addmemberlabel5);
                    a1.add(addmembertfield5);
                    a1.add(addmemberlabel6);
                    a1.add(addmembertfield6);
                    a1.add(addmemberlabel7);
                    a1.add(addmembertfield7);
                    a1.add(addmemberlabel8);
                    a1.add(addmembertfield8);
                    a1.add(addmemberlabel9);
                    a1.add(addmembertfield9);
                    a1.add(addmemberlabel10);
                    a1.add(addmembertfield10);
                a1.add(addmembertfield11);      
                    a1.add(b4);
                    a1.add(b5);




          // Add Panels
          Container contentPane = getContentPane();
          //Step 3:: Add Panels to frame
          contentPane.add(z1);



          // Window Listener
          addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
               dispose(); //terminates/frees up system resource
               System.exit(0);
               } //windowClosing
          } ); //windowAdapter



     }  // constructor close


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

     class Logout implements ActionListener
     {
                         
       
          public void actionPerformed(ActionEvent e)
          {
                     System.out.println("Test");

          }
     }



             
      class MemberaddDetails implements ActionListener
     {
                 String firstname;
             String lastname;
             String address;
             String town;
             String county;
            String Height;
            String phone;
            String age;
            String gender;
            String datereg;
            String memberid;
            Container cont; // content pane is passed to listener



       public MemberaddDetails(Container c) {
               cont = c; // content pane then kept as a variable
              }      
          public void actionPerformed(ActionEvent e)
          {
              Container cont;      
                  firstname = addmembertfield1.getText();
              System.out.println(firstname);
              lastname = addmembertfield2.getText();
              address = addmembertfield3.getText();
              town = addmembertfield4.getText();
              county = addmembertfield5.getText();
              height = addmembertfield6.getText();
              phone = addmembertfield7.getText();
              age = addmembertfield8.getText();
              gender = addmembertfield9.getText();
               datereg = addmembertfield10.getText();
               memberid = addmembertfield11.getText();
              addMemberSQL();

         
          }
     }



       
                 
            //listener class
     class LogoutReceptionist implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
               System.exit(0);
            }  //windowClosing
     }  //windowAdapter

          //listener class
          class MemberAddScreen implements ActionListener
          {
                    Container cont; // content pane is passed to listener
                    public MemberAddScreen(Container c) {
                    cont = c; // content pane then kept as a variable
          }




          public void actionPerformed(ActionEvent e)
               {  // open action performed.
                    // remove all panels from frame
                    cont.removeAll();
                    // add panel a1
                    cont.add(a1);
                    // refreshes the screen
                    ((JComponent)cont).revalidate();
                    ((JComponent)cont).repaint();
               } //close action performed


          } //close class memberadd screen




          class MemberScreen implements ActionListener
          {

               String username;
               String password;
               String passwordCpr;
               Container cont; // content pane is passed to listener


          public MemberScreen(Container c) {
               cont = c; // content pane then kept as a variable
          }



          public void actionPerformed(ActionEvent e)
          {
               Container cont;

               username = t1.getText();
               password = t2.getText();
               executeSQL();
          }


               
               
         

               public void executeSQL() {
                         ResultSet rset = null;
                         int colCount = -1;
                         boolean success = false;

                    try
                    {
                         Statement s = con.createStatement();
                         String sqlStr = "SELECT password FROM Password WHERE username='"+username+"';";
                         rset = s.executeQuery(sqlStr);
                         rset.next();
                         passwordCpr = rset.getString(1);

                         if(password.compareTo(passwordCpr)==0)
                         {


                                cont.removeAll();
                                cont.add(m1);
                                ((JComponent)cont).revalidate();
                                ((JComponent)cont).repaint();
                         }
                         else{
                              l3.setText("Your are not authorised to access");
                              t1.requestFocus();
                              t2.setText("");
                              t2.setText("");
                              password = "";
                         }

                    }
                    catch (SQLException sqlex)
                    {
                         System.err.println(sqlex.getMessage());
                         success = false;
                    }          }

                    }



     class MainPanel extends JPanel
     {

          // members
            private JButton b2;

          // constructors:
            public MainPanel()
          {



          } // constructor MainPanel
     } // Class MainPanel



public void databaseConnect()
     {

          String databaseName = null;

          try{

               Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
               System.out.println("Found the drivers");
          }
          catch (ClassNotFoundException cnfe){
               System.err.println(cnfe.getMessage());
               databaseConnect = false;
               return;
          }
          System.out.println("Will try to connect to Database now");
          try{
               String url ="jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=F:\\pro\\db1.mdb";
               con = DriverManager.getConnection(url, "", "");
               databaseConnect = true;
               System.out.println("Connected to Database");

          }
          catch(SQLException e){
               System.err.println(e.getMessage());
               databaseConnect = false;
               return;
          }
     }



      public void addMemberSQL(){

                   

                  try     {
           
                           Statement st = con.createStatement();
            st.executeUpdate("INSERT INTO Members " +"(First Name, Last Name, Town, County, Height, Telephone_no,Age,Gender, Date_Registered,Memberid)"+
                "VALUES"+" ('"+firstname+"','"+lastname+"','"+address+"','"+town+"','"+county+"','"+height+"','"+phone+"','"+age+"','"+gender+"','"+datereg+"')");
           
            con.close();


                       }
     
     catch (Exception e) {
            System.err.println("Got an exception! ");
            System.err.println(e.getMessage());

                         
                    }    

     finally{
     
          if(con != null)
          {
               try{
                    con.close();
          }
         
          catch(Exception ignored) {}
          }
          }
                   
          }






     class MemberPanel extends JPanel
     {

          // members
            private JButton b1;

          // constructors:
            public MemberPanel()
          {

               // create button
                   b1 = new JButton("Add Member ");
                   // add button as an event listener
                   b1.addActionListener(new MemberAddScreen(getContentPane()));



                   // add buttons to current panel
                   add(b1);
                  setVisible(true);
          } // constructor MainPanel
     } // Class MainPanel

     class AddMemberPanel extends JPanel
     {

          // members
            private JLabel l1,addmemberlabel2,addmemberlabel3,addmemberlabel4,addmemberlabel5,addmemberlabel6,addmemberlabel7,addmemberlabel8,addmemberlabel9,addmemberlabel10;
            private JTextField ddmembertfield1,addmembertfield2,addmembertfield3,addmembertfield4addmembertfield5,addmembertfield6,addmembertfield7,addmembertfield8,addmembertfield9,addmembertfield10;




          // constructors:
            public AddMemberPanel()
          {

          GridBagConstraints c = new GridBagConstraints();

          setLayout(new GridBagLayout());


               // create button
                l1 = new JLabel("Firstname ");
          addmemberlabel2 = new JLabel("Lastname");
          addmemberlabel3 = new JLabel("Address");
          addmemberlabel4 = new JLabel("Town");
          addmemberlabel5 = new JLabel("County");
          addmemberlabel6 = new JLabel("Height");
          addmemberlabel7 = new JLabel("Phone no");
          addmemberlabel8 = new JLabel("Age ");
          addmemberlabel9 = new JLabel("Gender");
          addmemberlabel10 = new JLabel("Date Registered");
          JTextField addmembertfield1  = new JTextField(15);
          JTextField addmembertfield2  = new JTextField(15);
          JTextField addmembertfield3  = new JTextField(15);
          JTextField addmembertfield4  = new JTextField(15);
          JTextField addmembertfield5  = new JTextField(15);
          JTextField addmembertfield6  = new JTextField(15);
          JTextField addmembertfield7  = new JTextField(15);
          JTextField addmembertfield8  = new JTextField(15);
          JTextField addmembertfield9  = new JTextField(15);
          JTextField addmembertfield10  = new JTextField(11);
               // add buttons to current panel

     /*     c.gridx = 0;
          c.gridy = 10;
          c.gridwidth = 15;
          c.gridheight = 5;
          add(l1,c);
          add(addmembertfield1);
          c.gridx = 0;
          c.gridy = 20;
          c.gridwidth = 15;
          c.gridheight = 5;
          add(addmemberlabel2,c);
          add(addmembertfield2);
          c.gridx = 0;
          c.gridy = 30;
          c.gridwidth = 15;
          c.gridheight = 5;
          add(addmemberlabel3,c);
          add(addmembertfield3);
          c.gridx = 0;
          c.gridy = 40;
          c.gridwidth = 15;
          c.gridheight = 5;
          add(addmemberlabel4,c);
          add(addmembertfield4);
          c.gridx = 0;
          c.gridy = 50;
          c.gridwidth = 15;
          c.gridheight = 5;
          add(addmemberlabel5,c);
          add(addmembertfield5);
          c.gridx = 0;
          c.gridy = 60;
          c.gridwidth = 15;
          c.gridheight = 5;
          add(addmemberlabel6,c);
          add(addmembertfield6);
          c.gridx = 0;
          c.gridy = 70;
          c.gridwidth = 15;
          c.gridheight = 5;
          add(addmemberlabel7,c);
          add(addmembertfield7);
          c.gridx = 0;
          c.gridy = 80;
          c.gridwidth = 15;
          c.gridheight = 5;
          add(addmemberlabel8);
          add(addmembertfield8);
          c.gridx = 0;
          c.gridy = 90;
          c.gridwidth = 15;
          c.gridheight = 5;
          add(addmemberlabel9,c);
          add(addmembertfield9);
          c.gridx = 0;
          c.gridy = 100;
          c.gridwidth = 15;
          c.gridheight = 5;
          add(addmemberlabel10,c);
          add(addmembertfield10);     */
              } // constructor MainPanel

      } // Class MainPanel




     public static void main(String[] args) {
              JFrame frame1 = new Test();
              frame1.show();
       } ;
} // class close

***********************************************************************

 class MemberaddDetails implements ActionListener
     {
                 String firstname;
             String lastname;
             String address;
             String town;
             String county;
            String Height;
            String phone;
            String age;
            String gender;
            String datereg;
            String memberid;
            Container cont; // content pane is passed to listener



       public MemberaddDetails(Container c) {
               cont = c; // content pane then kept as a variable
              }      
          public void actionPerformed(ActionEvent e)
          {
              Container cont;      
                  firstname = addmembertfield1.getText();
              System.out.println(firstname);
              lastname = addmembertfield2.getText();
              address = addmembertfield3.getText();
              town = addmembertfield4.getText();
              county = addmembertfield5.getText();
              height = addmembertfield6.getText();
              phone = addmembertfield7.getText();
              age = addmembertfield8.getText();
              gender = addmembertfield9.getText();
               datereg = addmembertfield10.getText();
               memberid = addmembertfield11.getText();
              addMemberSQL();

         
          }
     }


***********************************************************************
public void addMemberSQL(){

                   

                  try     {
           
                           Statement st = con.createStatement();
            st.executeUpdate("INSERT INTO Members " +"(First Name, Last Name, Town, County, Height, Telephone_no,Age,Gender, Date_Registered,Memberid)"+
                "VALUES"+" ('"+firstname+"','"+lastname+"','"+address+"','"+town+"','"+county+"','"+height+"','"+phone+"','"+age+"','"+gender+"','"+datereg+"')");
           
            con.close();


                       }
     
     catch (Exception e) {
            System.err.println("Got an exception! ");
            System.err.println(e.getMessage());

                         
                    }    

     finally{
     
          if(con != null)
          {
               try{
                    con.close();
          }
         
          catch(Exception ignored) {}
          }
          }
                   
          }


Avatar of CEHJ
CEHJ
Flag of United Kingdom of Great Britain and Northern Ireland image

You're hiding the true reference to the Container you need with a local reference to Container
Its better to tell us which line threw that exception. That's a long code.
>> Container cont;    

- in the actionPerfomed () method. Why have you declared it?
Yes - please tell us the line that the NPE is occurring on (which you will be informed of by the stack trace)
By the way, why do you have the same name for a method and a boolean data-member?
Also, your code gives me several compilation errors w.r.t {, }, etc. Hope you have it all in the correct order in your code since you say that it compiles fine. But what is WindowsUtilities? Is it a third party class that you are using?
Please post the code you're actually using. If you're getting NPEs and the code here won't compile, it can't be the same code
Avatar of mcowman
mcowman

ASKER

I think the NPE is occurring on 205
Windows Utilities is a third party class, its in the same folder as this code on my pc.  
Comment it out if you want as it only for "look"
let me know if you require more info
Thanks!!!
>>I think the NPE is occurring on 205

It's no good giving us line numbers! Please tell us the line in the code you posted
Well, it'd be better if you could also tell us which line in the code is line no. 205, because directly copy-pasting your code gives errors and we will have to change it slightly to get it working (like the line containing ********** before class MemberaddDetails). Depending upon whether we remove or comment those lines, the line numbers will vary.
Avatar of mcowman

ASKER

  firstname = addmembertfield1.getText();
ASKER CERTIFIED SOLUTION
Avatar of Mayank S
Mayank S
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Make sure that 'firstname' is not null before using it
By the way, are those JTextField members needed in all the classes where you have declared them?
>> Make sure that 'firstname' is not null before using it

But why? If firstname is null, even then: >> firstname = addmembertfield1.getText();

- would assign the value from the text-field to it. It would throw an NPE if addmembertfield1 is null.

Try to test it:

System.out.println ( addmembertfield1 ) ;
firstname = addmembertfield1.getText () ;
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
>>But why?

Because this sort of thing *will* throw an NPE

" VALUES(" + firstname +

etc.
But CEHJ, that isn't the line which is throwing the NPE. Like mcowman said, its:  firstname = addmembertfield1.getText();

Also:

>> " VALUES(" + firstname +

- would append "null" to it, like:

VALUES (null, ....

rather than throwing a NullPointer.

Anyway, mcowman, can we have any feedback?
Avatar of mcowman

ASKER

No more exception!!! Thanks, but it still doesnt take the text from the field and enter in the
database,  Am I missing something??  Please bear with me as I'm learning as I code!!!!
Thanks!!
>>But CEHJ, that isn't the line which is throwing the NPE

Yes but i don't think that really IS the place necessarily - but i could be wrong ;-)

>>- would append "null" to it, like:

Yes - you're right, but what i was getting at is something might be happening after that line

>>No more exception!!!


As a result of what alteration?
Avatar of mcowman

ASKER

CEHJ,
I made the change based on your comments

 if (firstname != null){      
                  String firstname = addmembertfield1.getText();
              System.out.println(firstname);
              }
              else {
              System.out.println("not working");

Is this correct??
Now when I click the button it just gives not working
Thanks!!
Well that's not actually doing much - firstname is bound to start off null.
Turn the test round and see what happens:

if (firstname == null) //etc
Avatar of mcowman

ASKER

I updated the code with the following

if (firstname == null){      
                  String firstname = addmembertfield1.getText();
              System.out.println(firstname);
              }
              else {
              System.out.println("not working");
            }

and the NPE has returned.  This time at line 206
 String firstname = addmembertfield1.getText();
I'm beginning to lose concentration a bit now mcowman (should be doing other things!)
so you might be better off with mayankeagle. I would go through the references to addmembertfield1
as he suggested earlier. I can see that in at least one place you have hidden the instance variable of that name
with a locally declared one. That means if it's initialized in the latter place, when you access the former later, it will
be null. That's probably what's happening. It looks like you're even doing the second (local) thing more than once in some cases!
Avatar of mcowman

ASKER

mayankeagle,

My train of thought is a little confused, where do you believe the problem lies??
Thank you
Avatar of mcowman

ASKER

Can anyone help???
Just do what i mentioned in my last post first.
Sorry for being out of touch for a while ;-)

Do what has been suggested. I already asked you so whether you need local addmembertfield1, 2, 3.... etc - you can remove them. Have you followed what I asked you to do?

>> JTextField addmembertfield1 = new ....
>> to: addmemberrtfield1 = new .... (the JTextField declaration is removed)

Will return tomorrow.
Avatar of mcowman

ASKER

I've trimmed the program down as mentioned and I'm still getting the same error
Should I declare firstname as null globally?   Below is the code
Is this what you mean???

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.sql.*;
import java.net.*;


class Test extends JFrame{ //class open
     //Step 2:: Global definitions of Panels
     JPanel z1;
     JPanel m1;
     JPanel a1;
     Container cont;

     // Global defintion of text fields/buttons/strings etc..
     private JButton b1,b2,b3,b4,b5;
     private JLabel l1,l2,l3,addmemberlabel2,addmemberlabel3,addmemberlabel4,addmemberlabel5,addmemberlabel6,addmemberlabel7,addmemberlabel8,addmemberlabel9,addmemberlabel10,addmemberlabel11;
     private JTextField t1,t2,addmembertfield1,addmembertfield2,addmembertfield3,addmembertfield4,addmembertfield5,addmembertfield6,addmembertfield7,addmembertfield8,addmembertfield9,addmembertfield10,addmembertfield11;
     private String username,password,passwordCpr,firstname,lastname,address,town,county,height,phone,age,gender,datereg,memberid;




          //needed to connect to database
          boolean databaseConnect= false;
          private java.sql.Connection con=null;


     // Constructor
     public Test()
     { // constructor open
               // set title of frame
               setTitle("Technofit");
               // Set Size of Frame (default is 0,0)
               setSize(200,350);
               //set location of Frame (default is 0,0 - top left corner)
               setLocation(10,100);
               // Calls another java program stored in same folder and applies it to this program
               WindowUtilities.setNativeLookAndFeel();
               // calls the databaseConnect function/method
               databaseConnect();

               //Step 3:: initialise panels
               m1 = new JPanel();
               a1 = new JPanel();
               z1 = new JPanel();

                    //create button
                    b2 = new JButton("Login");
                    //create labels
                    l2 = new JLabel("Username");
                    l3 = new JLabel("Password");
                    // create texfields
                    t1 = new JTextField(15);
                    t2 = new JTextField(15);

                    //add button as Listener
                    b2.addActionListener(new MemberScreen(getContentPane()));
                    //add button/texfields/labels to panel
                    z1.add(l2);
                    z1.add(t1);
                    z1.add(l3);
                    z1.add(t2);
                    z1.add(b2);



                    // create button
                          b1 = new JButton("Add Member ");

                          // add button as an event listener
                          b1.addActionListener(new MemberAddScreen(getContentPane()));

                    // add buttons to current panel
                    m1.add(b1);



                          // create button
                          b4 = new JButton("OK ");
                          b5 = new JButton("Logout");
                          // add button as an event listener
                          b4.addActionListener(new MemberaddDetails());
                          b5.addActionListener(new Logout());


                    // create labels/textfields
                    l1 = new JLabel("Firstname ");
                    addmemberlabel2 = new JLabel("Lastname");
                    addmemberlabel3 = new JLabel("Address1 ");
                    addmemberlabel4 = new JLabel("Town ");
                    addmemberlabel5 = new JLabel("County ");
                    addmemberlabel6 = new JLabel("Height ");
                    addmemberlabel7 = new JLabel("phone no ");
                    addmemberlabel8 = new JLabel("Age ");
                    addmemberlabel9 = new JLabel("Gender");
                    addmemberlabel10= new JLabel("Date Registered");
                addmemberlabel11 = new JLabel("Member ID");
                     JTextField addmembertfield1  = new JTextField(15);
                    JTextField addmembertfield2  = new JTextField(15);
                    JTextField addmembertfield3  = new JTextField(15);
                    JTextField addmembertfield4  = new JTextField(15);
                    JTextField addmembertfield5  = new JTextField(15);
                    JTextField addmembertfield6  = new JTextField(15);
                    JTextField addmembertfield7  = new JTextField(15);
                    JTextField addmembertfield8  = new JTextField(15);
                    JTextField addmembertfield9  = new JTextField(15);
                    JTextField addmembertfield10  = new JTextField(6);
                JTextField addmembertfield11  = new JTextField(15);



                    //add buttons,texfields to panel a1
                    a1.add(l1);
                    a1.add(addmembertfield1);
                    a1.add(addmemberlabel2);
                    a1.add(addmembertfield2);
                    a1.add(addmemberlabel3);
                    a1.add(addmembertfield3);
                    a1.add(addmemberlabel4);
                    a1.add(addmembertfield4);
                    a1.add(addmemberlabel5);
                    a1.add(addmembertfield5);
                    a1.add(addmemberlabel6);
                    a1.add(addmembertfield6);
                    a1.add(addmemberlabel7);
                    a1.add(addmembertfield7);
                    a1.add(addmemberlabel8);
                    a1.add(addmembertfield8);
                    a1.add(addmemberlabel9);
                    a1.add(addmembertfield9);
                    a1.add(addmemberlabel10);
                    a1.add(addmembertfield10);
                a1.add(addmembertfield11);
                    a1.add(b4);
                    a1.add(b5);




          // Add Panels
          Container contentPane = getContentPane();
          //Step 3:: Add Panels to frame
          contentPane.add(z1);



          // Window Listener
          addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
               dispose(); //terminates/frees up system resource
               System.exit(0);
               } //windowClosing
          } ); //windowAdapter



     }  // constructor close



     class Logout implements ActionListener
     {


          public void actionPerformed(ActionEvent e)
          {
                     System.out.println("Test");

          }
     }




      class MemberaddDetails implements ActionListener
     {
                //String firstname ;
            //String lastname;
            //String address;
            //String town;
            //String county;
            //String Height;
            //String phone;
            //String age;
            //String gender;
            //String datereg;
            //String memberid;
            //Container cont;


       public MemberaddDetails() {

              }
          public void actionPerformed(ActionEvent e)
          {

              if (firstname == null){
                 String firstname = addmembertfield1.getText();
             System.out.println(firstname);
              }
              else {
              System.out.println("not working");
            }
            //  lastname = addmembertfield2.getText();
            //  address = addmembertfield3.getText();
            //  town = addmembertfield4.getText();
            //  county = addmembertfield5.getText();
            //  height = addmembertfield6.getText();
            //  phone = addmembertfield7.getText();
            //  age = addmembertfield8.getText();
            //  gender = addmembertfield9.getText();
            //   datereg = addmembertfield10.getText();
            //   memberid = addmembertfield11.getText();
            //  addMemberSQL();


          }
     }





            //listener class
     class LogoutReceptionist implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
               System.exit(0);
            }  //windowClosing
     }  //windowAdapter

          //listener class
          class MemberAddScreen implements ActionListener
          {
                    Container cont; // content pane is passed to listener
                    public MemberAddScreen(Container c) {
                    cont = c; // content pane then kept as a variable
          }




          public void actionPerformed(ActionEvent e)
               {  // open action performed.
                    // remove all panels from frame
                    cont.removeAll();
                    // add panel a1
                    cont.add(a1);
                    // refreshes the screen
                    ((JComponent)cont).revalidate();
                    ((JComponent)cont).repaint();
               } //close action performed


          } //close class memberadd screen




          class MemberScreen implements ActionListener
          {

               String username;
               String password;
               String passwordCpr;
               Container cont; // content pane is passed to listener


          public MemberScreen(Container c) {
               cont = c; // content pane then kept as a variable
          }



          public void actionPerformed(ActionEvent e)
          {
               Container cont;

               username = t1.getText();
               password = t2.getText();
               executeSQL();
          }






               public void executeSQL() {
                         ResultSet rset = null;
                         int colCount = -1;
                         boolean success = false;

                    try
                    {
                         Statement s = con.createStatement();
                         String sqlStr = "SELECT password FROM Password WHERE username='"+username+"';";
                         rset = s.executeQuery(sqlStr);
                         rset.next();
                         passwordCpr = rset.getString(1);

                         if(password.compareTo(passwordCpr)==0)
                         {


                                cont.removeAll();
                                cont.add(m1);
                                ((JComponent)cont).revalidate();
                                ((JComponent)cont).repaint();
                         }
                         else{
                              l3.setText("Your are not authorised to access");
                              t1.requestFocus();
                              t2.setText("");
                              t2.setText("");
                              password = "";
                         }

                    }
                    catch (SQLException sqlex)
                    {
                         System.err.println(sqlex.getMessage());
                         success = false;
                    }          }

                    }



     class MainPanel extends JPanel
     {

          // members
            private JButton b2;

          // constructors:
            public MainPanel()
          {



          } // constructor MainPanel
     } // Class MainPanel



public void databaseConnect()
     {

          String databaseName = null;

          try{

               Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
               System.out.println("Found the drivers");
          }
          catch (ClassNotFoundException cnfe){
               System.err.println(cnfe.getMessage());
               databaseConnect = false;
               return;
          }
          System.out.println("Will try to connect to Database now");
          try{
               String url ="jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=F:\\pro\\db1.mdb";
               con = DriverManager.getConnection(url, "", "");
               databaseConnect = true;
               System.out.println("Connected to Database");

          }
          catch(SQLException e){
               System.err.println(e.getMessage());
               databaseConnect = false;
               return;
          }
     }



      public void addMemberSQL(){



                  try     {

                           Statement st = con.createStatement();
            st.executeUpdate("INSERT INTO Members " +"(First Name, Last Name, Town, County, Height, Telephone_no,Age,Gender, Date_Registered,Memberid)"+
                "VALUES"+" ('"+firstname+"','"+lastname+"','"+address+"','"+town+"','"+county+"','"+height+"','"+phone+"','"+age+"','"+gender+"','"+datereg+"')");

            con.close();


                       }

     catch (Exception e) {
            System.err.println("Got an exception! ");
            System.err.println(e.getMessage());


                    }

     finally{

          if(con != null)
          {
               try{
                    con.close();
          }

          catch(Exception ignored) {}
          }
          }

          }






     public static void main(String[] args) {
              JFrame frame1 = new Test();
              frame1.show();
       } ;
} // class close

 
I don't think you understand what's required, you keep hiding your instance variable:

                     JTextField addmembertfield1  = new JTextField(15);

You now have two references to that variable as it's been declared earlier. That should be

                     addmembertfield1  = new JTextField(15);


Avatar of mcowman

ASKER

 Do you mean change to the below(2) references because I have the following(1)??  When I do this it doesnt compile it gives me four NPE
errors!!  Sorry to be so slow on the uptake about this by the way Thanks- m


(1)
private JTextField t1,t2,addmembertfield1,addmembertfield2,addmembertfield3,addmembertfield4,addmembertfield5,addmembertfield6,addmembertfield7,addmembertfield8,addmembertfield9,addmembertfield10,addmembertfield11; etc            


                   (2)
                   addmemberlabel2 = new JLabel("Lastname");
                   addmemberlabel3 = new JLabel("Address1 ");
                    addmemberlabel4 = new JLabel("Town ");
                    addmemberlabel5 = new JLabel("County ");
                    addmemberlabel6 = new JLabel("Height ");
                    addmemberlabel7 = new JLabel("phone no ");
                    addmemberlabel8 = new JLabel("Age ");
                    addmemberlabel9 = new JLabel("Gender");
                    addmemberlabel10= new JLabel("Date Registered");
                addmemberlabel11 = new JLabel("Member ID");
                    addmembertfield1  = new JTextField(15);
                    addmembertfield1  = new JTextField(15);
                    addmembertfield2  = new JTextField(15);
                    addmembertfield3  = new JTextField(15);
                    addmembertfield4  = new JTextField(15);
                     addmembertfield5  = new JTextField(15);
                     addmembertfield6  = new JTextField(15);
                    addmembertfield7  = new JTextField(15);
                   addmembertfield8  = new JTextField(15);
                   addmembertfield9  = new JTextField(15);
                   addmembertfield10  = new JTextField(15);
Avatar of mcowman

ASKER

Correction - Sorry it does complie, it doesnt run Thks !!
>>When I do this it doesnt compile it gives me four NPE
errors!!

That's a contradiction in terms - you can only get an NPE from running a program and you can't run it if it won't compile

The only change you should have made is to change

>>JTextField addmembertfield1  = new JTextField(15);

to

addmembertfield1  = new JTextField(15);

SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
hello: change this:

JTextField  addmembertfield1  = new JTextField(15);
JTextField addmembertfield2  = new JTextField(15);
JTextField addmembertfield3  = new JTextField(15);
JTextField addmembertfield4  = new JTextField(15);
JTextField addmembertfield5  = new JTextField(15);
JTextField addmembertfield6  = new JTextField(15);
JTextField addmembertfield7  = new JTextField(15);
JTextField addmembertfield8  = new JTextField(15);
JTextField addmembertfield9  = new JTextField(15);
JTextField addmembertfield10  = new JTextField(6);
JTextField addmembertfield11  = new JTextField(15);


TO this:


addmembertfield1  = new JTextField(15);
addmembertfield2  = new JTextField(15);
addmembertfield3  = new JTextField(15);
addmembertfield4  = new JTextField(15);
addmembertfield5  = new JTextField(15);
addmembertfield6  = new JTextField(15);
addmembertfield7  = new JTextField(15);
addmembertfield8  = new JTextField(15);
addmembertfield9  = new JTextField(15);
addmembertfield10  = new JTextField(6);
addmembertfield11  = new JTextField(15);


That should work for you!!!
mcowman, what 91mustang suggested above is exactly what we have been trying to tell you:

>> JTextField addmembertfield1 = new JTextField ( 15 ) ;
to: addmemberrtfield1 = new .... (the JTextField declaration is removed)

- do you understand it now?
Avatar of mcowman

ASKER

Aplogies about this, I finally understood and made the change, it now gives an SQL error, Thanks for your
help, I'll take a look at the new error and open a new question if needs be.
Again, sorry for being so slow on the uptake!!!
Thanks!!
8-) we'll be there ;-)