0

hi,
Iam trying to add names and numbers to a database then save them by updating them. i run my program, but when i press any button nothing happens?????
pls help me, i do not know where is the problem in my program????

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

public class Ghu extends JFrame implements ActionListener {

  final static String 
  dbURL="jdbc:odbc:addressesdb";

   private final String WINDOW_TITLE= "AddressBook";
        private final int WINDOW_WIDTH= 400;
        private final int WINDOW_HEIGHT= 300;
	
   
        private JPanel adPanel= new JPanel();
        private JPanel delPanel= new JPanel();
        private JPanel updPanel= new JPanel();
        private JLabel adNameLabel=  new JLabel("Name");
        private JLabel adNumLabel= new JLabel("Number");
        private JLabel delNumLabel= new JLabel("Number");
        private JLabel updNameLabel=  new JLabel("Name");
        private JLabel updNumLabel= new JLabel("Number");
      
        private JTextField adNameField= new JTextField(20);
        private JTextField adNumField= new JTextField(20);
        private JTextField updNameField= new JTextField(20);
        private JTextField updNumField= new JTextField(20);
        private JTextField delNumField= new JTextField(20);
        private JButton adButton= new JButton("Add");
        private JButton delButton= new JButton("Delete");
        private JButton updButton= new JButton("Update");
        private JButton exitButton= new JButton("Exit");
       
   	
  

  Connection conn;
  Statement stmt;
  ResultSet rset;

  public static void main(String args[]) {
	new Ghu();
  }

  public Ghu() {
	setTitle(WINDOW_TITLE);
   	setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
   	setVisible(true);
   	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        buildAdPanel();
        buildDelPanel();
        buildUpdPanel();
        add(adPanel,BorderLayout.NORTH);
        add(delPanel,BorderLayout.CENTER);
        add(updPanel,BorderLayout.SOUTH);
  }


public boolean isConnected(){
  boolean connected=false;
  try {
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");	

	conn = 	DriverManager.getConnection(dbURL); 
        stmt = conn.createStatement();
	connected=true;
  }
  catch (ClassNotFoundException e) {
        System.err.println("Can't find JDBC to ODBC Bridge");    

  }
  catch(SQLException e) {
    System.err.println("An SQL exception occurred while trying 

to connect to the server: " +e.getMessage());
  }
  return connected;
}

public void actionPerformed(ActionEvent evt)  {
	try {
		String command=evt.getActionCommand();
		
		
		if (evt.getSource()==adButton)
		  processAdd();
		else if (evt.getSource()==delButton)
		  processDelete();
		else if (evt.getSource()==updButton)
		  processUpdate();
		else if (evt.getSource()==exitButton) {
    	  stmt.close();
    	  conn.close();
		  System.exit(0);
		}
	}
	catch (SQLException e) {
	       System.err.println("An SQL exception occurred 

while exiting: " +e.getMessage());
	}
   }

  public void buildAdPanel() {
        adPanel.setLayout(new GridLayout(3,2));
        adPanel.add(adNameLabel);
        adPanel.add(adNameField);
        adPanel.add(adNumLabel);
        adPanel.add(adNumField);
        adPanel.add(adButton);
       }


  public void buildDelPanel() {
         delPanel.setLayout(new GridLayout(2,2));
         delPanel.add(delNumLabel);
         delPanel.add(delNumField);
         delPanel.add(delButton);
                       
       }
  public void buildUpdPanel() {
        updPanel.setLayout(new GridLayout(3,2));
        updPanel.add(updNameLabel);
        updPanel.add(updNameField);
        updPanel.add(updNumLabel);
        updPanel.add(updNumField);
        updPanel.add(updButton);
        updPanel.add(exitButton);
	
     }

  
  private void processAdd() {
  	String sql;
  	int nrows;
  	sql="insert into addressesdb values(?,?)";
  	try {
	  PreparedStatement psmt=conn.prepareStatement(sql);
	  psmt.setString(1,adNumField.getText());
	  psmt.setString(2,adNameField.getText());
  	  nrows=psmt.executeUpdate();
  	  psmt.close();
  	  JOptionPane.showMessageDialog(null,"The name is 

saved");
       }
       catch (SQLException e) {
          System.err.println("An SQL exception occurred while 

Inserting: " +e.getMessage());
       }
  }

  private void processUpdate() {
  	String sql;
  	int nrows;
  	sql="update addressesdb set NAMES=? where NUMBERS=?";
  	try {
   	  PreparedStatement psmt=conn.prepareStatement(sql);
   	  psmt.setString(1,updNameField.getText());
   	  psmt.setString(2,updNumField.getText());
 	  nrows=psmt.executeUpdate();
 	  psmt.close();
  	 JOptionPane.showMessageDialog(null,"The database is 

updated");
       }
        catch (SQLException e) {
          System.err.println("An SQL exception occurred while 

Updating: " +e.getMessage());
       }
  }

  private void processDelete() {
  	String sql;
  	int nrows;
  	sql="delete from addressesdb where NUMBERS=?";
  	try {
   	  PreparedStatement psmt=conn.prepareStatement(sql);
   	  psmt.setString(1,delNumField.getText());
 	  nrows=psmt.executeUpdate();
 	  psmt.close();
  	  JOptionPane.showMessageDialog(null,"The Number is 

deleted");
       }
       catch (SQLException e) {
         System.err.println("An SQL exception occurred while 

Deleting: " +e.getMessage());
       }
   }

  
}
3
Contributors
8
Replies
10
Views
7 Years
Discussion Span
Last Post by nanna
0

In order for the actionPerformed method to be called, you need to use whateverThingItIs.addActionListener(Ghu); where Ghu is an instance of your Ghu class. So, for example, if you had a JButton called button and a Ghu called myGHU, it would have to say button.addActionListener(myGHU); . Your code is pretty hard to read but it seems like you never used this method, so that is why actionPerformed will never be called & it will never work.

0

In order for the actionPerformed method to be called, you need to use whateverThingItIs.addActionListener(Ghu); where Ghu is an instance of your Ghu class. So, for example, if you had a JButton called button and a Ghu called myGHU, it would have to say button.addActionListener(myGHU); . Your code is pretty hard to read but it seems like you never used this method, so that is why actionPerformed will never be called & it will never work.

hi,
thanks, yes i forget to add actionlistener.
But after adding actionlistener, i get the following exception error when press on any button :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Ghu.personAdd(Ghu.java:140)
at Ghu.actionPerformed(Ghu.java:85)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown S
ce)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

0

There is no such method called personAdd in Ghu in what you've posted, yet there is an error saying there is..

yes there is such a method in my program since i changed the name of processAdd method into personAdd, but when i press any button i've got the same error??????

Edited by mike_2000_17: Fixed formatting

0

Post your updated code, then, and your updated errors (if you have any new/different ones). Post your code in code tags and for the first CODE, put so it will have line numbers.[CODE=Java] so it will have line numbers.

0

Here is the updated code:

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

public class Ghu extends JFrame implements ActionListener {

  final static String 
  dbURL="jdbc:odbc:addressesdb";

   private final String WINDOW_TITLE= "AddressBook";
        private final int WINDOW_WIDTH= 400;
        private final int WINDOW_HEIGHT= 300;
	
   
        private JPanel adPanel= new JPanel();
        private JPanel delPanel= new JPanel();
        private JPanel updPanel= new JPanel();
        private JLabel adNameLabel=  new JLabel("Name");
        private JLabel adNumLabel= new JLabel("Number");
        private JLabel delNumLabel= new JLabel("Number");
        private JLabel updNameLabel=  new JLabel("Name");
        private JLabel updNumLabel= new JLabel("Number");
      
        private JTextField adNameField= new JTextField(20);
        private JTextField adNumField= new JTextField(20);
        private JTextField updNameField= new JTextField(20);
        private JTextField updNumField= new JTextField(20);
        private JTextField delNumField= new JTextField(20);
        private JButton adButton= new JButton("Add");
        private JButton delButton= new JButton("Delete");
        private JButton updButton= new JButton("Update");
        private JButton exitButton= new JButton("Exit");
       
   	
  

  Connection conn;
  Statement stmt;
  ResultSet rset;

  public static void main(String args[]) {
	new Ghu();
  }

  public Ghu() {
	setTitle(WINDOW_TITLE);
   	setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
   	setVisible(true);
   	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        buildAdPanel();
        buildDelPanel();
        buildUpdPanel();
        add(adPanel,BorderLayout.NORTH);
        add(delPanel,BorderLayout.CENTER);
        add(updPanel,BorderLayout.SOUTH);
  }


public boolean isConnected(){
  boolean connected=false;
  try {
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");	

	conn = 	DriverManager.getConnection(dbURL); 
        stmt = conn.createStatement();
	connected=true;
        
  }
  catch (ClassNotFoundException e) {
        System.err.println("Can't find JDBC to ODBC Bridge");      }
  catch(SQLException e) {
    System.err.println("An SQL exception occurred while trying to connect to the server: " +e.getMessage());
  }
  return connected;
}

public void actionPerformed(ActionEvent evt)  {
	try {
		String command=evt.getActionCommand();
		
		if (evt.getSource()==adButton) {
		  personAdd();
               }
		else if (evt.getSource()==delButton) 
		  personDelete();
                
		else if (evt.getSource()==updButton) 
		  personUpdate();
                
		else if (evt.getSource()==exitButton) {
    	  stmt.close();
    	  conn.close();
               
         	  System.exit(0);
	      }
       }
	catch (SQLException e) {
	       System.err.println("An SQL exception occurred while exiting: " +e.getMessage());
	}
   }

  private void buildAdPanel() {
        adPanel.setLayout(new GridLayout(3,2));
        adPanel.add(adNameLabel);
        adPanel.add(adNameField);
        adPanel.add(adNumLabel);
        adPanel.add(adNumField);
        adPanel.add(adButton);
        adButton.addActionListener(this);
       }


  private void buildDelPanel() {
         delPanel.setLayout(new BorderLayout());
         delPanel.add(delNumLabel,BorderLayout.WEST);
         delPanel.add(delNumField,BorderLayout.CENTER);
         delPanel.add(delButton, BorderLayout.SOUTH);
         delButton.addActionListener(this);
                       
       }
  private void buildUpdPanel() {
        updPanel.setLayout(new GridLayout(3,3));
        updPanel.add(updNameLabel);
        updPanel.add(updNameField);
        updPanel.add(updNumLabel);
        updPanel.add(updNumField);
        updPanel.add(updButton);
        updButton.addActionListener(this);
        updPanel.add(exitButton);
        exitButton.addActionListener(this);
	
     }

  
  private void personAdd() {
  	String sql;
  	int nrows;
  	sql="insert into addressesdb values(?,?)";
  	try {
	  PreparedStatement psmt=conn.prepareStatement(sql);
	  psmt.setString(1,adNumField.getText());
	  psmt.setString(2,adNameField.getText());
  	  nrows=psmt.executeUpdate();
  	  psmt.close();
  	 JOptionPane.showMessageDialog(null,nrows + "The name is saved");
       }
       catch (SQLException e) {
          System.err.println("An SQL exception occurred while Inserting: " +e.getMessage());
       }
  }

  private void personUpdate() {
  	String sql;
  	int nrows;
  	sql="update addressesdb set NAMES=? where NUMBERS=?";
  	try {
   	  PreparedStatement psmt=conn.prepareStatement(sql);
   	  psmt.setString(1,updNameField.getText());
   	  psmt.setString(2,updNumField.getText());
 	  nrows=psmt.executeUpdate();
 	  psmt.close();
  	 JOptionPane.showMessageDialog(null,nrows + "The database is updated");
       }
        catch (SQLException e) {
          System.err.println("An SQL exception occurred while Updating: " +e.getMessage());
       }
  }

  private void personDelete() {
  	String sql;
  	int nrows;
  	sql="delete from addressesdb where NUMBERS=?";
  	try {
   	  PreparedStatement psmt=conn.prepareStatement(sql);
   	  psmt.setString(1,delNumField.getText());
 	  nrows=psmt.executeUpdate();
 	  psmt.close();
  	  JOptionPane.showMessageDialog(null,nrows + "The Number is deleted");
       }
       catch (SQLException e) {
         System.err.println("An SQL exception occurred while Deleting: " +e.getMessage());
       }
   }


And here is the error :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at Ghu.personAdd(Ghu.java:142)
        at Ghu.actionPerformed(Ghu.java:84)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sou
ce)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

  
}
0

Hi nanna,

Sorry to weigh in on this conversation at such a late stage, but I think I see your problem. The compiler is pointing you to it with the error:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Ghu.personAdd(Ghu.java:142)

It is saying that something is calling a method on line 142 in the Ghu class, but that something is null. A null object (one that hasn't been instantiated properly) cannot call a method. In your case, the variable conn has not been created before the call to conn.prepareStatement(sql); on line 142. So you need to call your isConnected method before this call in order to create conn.

HTH,
darkagn

0

Hi nanna,

Sorry to weigh in on this conversation at such a late stage, but I think I see your problem. The compiler is pointing you to it with the error:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Ghu.personAdd(Ghu.java:142)

It is saying that something is calling a method on line 142 in the Ghu class, but that something is null. A null object (one that hasn't been instantiated properly) cannot call a method. In your case, the variable conn has not been created before the call to conn.prepareStatement(sql); on line 142. So you need to call your isConnected method before this call in order to create conn.

HTH,
darkagn

Thanks, I think now I have connection when i add
conn = DriverManager.getConnection(dbURL); method before PreparedStatement.
But when I try to add a name and number I get a message says that name is saved, but when I display my database I cannot find the new name?? And it is the same when I try to delete a number from the database table I get a message says that the number is deleted but it still there in the database although I press (update ) button??.

This article has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.