assaultkitty
asked on
Error-NullPointer
This is the error that I am getting when I run my program. Can you tell me what the problem is for this program?
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerExcep tion
at AddressBookDisplay$9.windo wClosing(A ddressBook Display.ja va:267)
at java.awt.AWTEventMulticast er.windowC losing(AWT EventMulti caster.jav a:332)
at java.awt.Window.processWin dowEvent(W indow.java :1865)
at javax.swing.JFrame.process WindowEven t(JFrame.j ava:274)
at java.awt.Window.processEve nt(Window. java:1823)
at java.awt.Component.dispatc hEventImpl (Component .java:4651 )
at java.awt.Container.dispatc hEventImpl (Container .java:2099 )
at java.awt.Window.dispatchEv entImpl(Wi ndow.java: 2478)
at java.awt.Component.dispatc hEvent(Com ponent.jav a:4481)
at java.awt.EventQueue.dispat chEventImp l(EventQue ue.java:64 3)
at java.awt.EventQueue.access $000(Event Queue.java :84)
at java.awt.EventQueue$1.run( EventQueue .java:602)
at java.awt.EventQueue$1.run( EventQueue .java:600)
at java.security.AccessContro ller.doPri vileged(Na tive Method)
at java.security.AccessContro lContext$1 .doInterse ctionPrivi lege(Acces sControlCo ntext.java :87)
at java.security.AccessContro lContext$1 .doInterse ctionPrivi lege(Acces sControlCo ntext.java :98)
at java.awt.EventQueue$2.run( EventQueue .java:616)
at java.awt.EventQueue$2.run( EventQueue .java:614)
at java.security.AccessContro ller.doPri vileged(Na tive Method)
at java.security.AccessContro lContext$1 .doInterse ctionPrivi lege(Acces sControlCo ntext.java :87)
at java.awt.EventQueue.dispat chEvent(Ev entQueue.j ava:613)
at java.awt.EventDispatchThre ad.pumpOne EventForFi lters(Even tDispatchT hread.java :269)
at java.awt.EventDispatchThre ad.pumpEve ntsForFilt er(EventDi spatchThre ad.java:18 4)
at java.awt.EventDispatchThre ad.pumpEve ntsForHier archy(Even tDispatchT hread.java :174)
at java.awt.EventDispatchThre ad.pumpEve nts(EventD ispatchThr ead.java:1 69)
at java.awt.EventDispatchThre ad.pumpEve nts(EventD ispatchThr ead.java:1 61)
at java.awt.EventDispatchThre ad.run(Eve ntDispatch Thread.jav a:122)
import java.awt.event.ActionEvent ;
import java.awt.event.ActionListe ner;
import java.awt.event.WindowAdapt er;
import java.awt.event.WindowEvent ;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.util.List;
import javax.swing.JButton;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstant s;
import javax.swing.BoxLayout;
import javax.swing.BorderFactory;
import javax.swing.JOptionPane;
public class AddressBookDisplay extends JFrame
{
private Person currentEntry;
private PersonQueries personQueries;
private List< Person > results;
private int numberOfEntries = 0;
private int currentEntryIndex;
private JButton browseButton;
private JLabel emailLabel;
private JTextField emailTextField;
private JLabel firstNameLabel;
private JTextField firstNameTextField;
private JLabel idLabel;
private JTextField idTextField;
private JTextField indexTextField;
private JLabel lastNameLabel;
private JTextField lastNameTextField;
private JTextField maxTextField;
private JButton nextButton;
private JLabel ofLabel;
private JLabel phoneLabel;
private JTextField phoneTextField;
private JButton previousButton;
private JButton queryButton;
private JLabel queryLabel;
private JPanel queryPanel;
private JPanel navigatePanel;
private JPanel displayPanel;
private JTextField queryTextField;
private JButton insertButton;
private JButton updateButton;
private JButton deleteButton;
// no-argument constructor
public AddressBookDisplay()
{
super( "Address Book" );
// establish database connection and set up PreparedStatements
// personQueries = new PersonQueries();
// create GUI
navigatePanel = new JPanel();
previousButton = new JButton();
indexTextField = new JTextField( 2 );
ofLabel = new JLabel();
maxTextField = new JTextField( 2 );
nextButton = new JButton();
displayPanel = new JPanel();
idLabel = new JLabel();
idTextField = new JTextField( 10 );
firstNameLabel = new JLabel();
firstNameTextField = new JTextField( 10 );
lastNameLabel = new JLabel();
lastNameTextField = new JTextField( 10 );
emailLabel = new JLabel();
emailTextField = new JTextField( 10 );
phoneLabel = new JLabel();
phoneTextField = new JTextField( 10 );
queryPanel = new JPanel();
queryLabel = new JLabel();
queryTextField = new JTextField( 10 );
queryButton = new JButton();
browseButton = new JButton();
insertButton = new JButton();
updateButton = new JButton();
deleteButton = new JButton();
setLayout( new FlowLayout( FlowLayout.CENTER, 10, 10 ) );
setSize( 400, 400 );
setResizable( false );
navigatePanel.setLayout(
new BoxLayout( navigatePanel, BoxLayout.X_AXIS ) );
previousButton.setText( "Previous" );
previousButton.setEnabled( false );
previousButton.addActionLi stener(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
previousButtonActionPerfor med( evt );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
navigatePanel.add( previousButton );
navigatePanel.add( Box.createHorizontalStrut( 10 ) );
indexTextField.setHorizont alAlignmen t(
JTextField.CENTER );
indexTextField.addActionLi stener(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
indexTextFieldActionPerfor med( evt );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
navigatePanel.add( indexTextField );
navigatePanel.add( Box.createHorizontalStrut( 10 ) );
ofLabel.setText( "of" );
navigatePanel.add( ofLabel );
navigatePanel.add( Box.createHorizontalStrut( 10 ) );
maxTextField.setHorizontal Alignment(
JTextField.CENTER );
maxTextField.setEditable( false );
navigatePanel.add( maxTextField );
navigatePanel.add( Box.createHorizontalStrut( 10 ) );
nextButton.setText( "Next" );
nextButton.setEnabled( false );
nextButton.addActionListen er(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
nextButtonActionPerformed( evt );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
navigatePanel.add( nextButton );
add( navigatePanel );
displayPanel.setLayout( new GridLayout( 5, 2, 4, 4 ) );
idLabel.setText( "Address ID:" );
displayPanel.add( idLabel );
idTextField.setEditable( false );
displayPanel.add( idTextField );
firstNameLabel.setText( "First Name:" );
displayPanel.add( firstNameLabel );
displayPanel.add( firstNameTextField );
lastNameLabel.setText( "Last Name:" );
displayPanel.add( lastNameLabel );
displayPanel.add( lastNameTextField );
emailLabel.setText( "Email:" );
displayPanel.add( emailLabel );
displayPanel.add( emailTextField );
phoneLabel.setText( "Phone Number:" );
displayPanel.add( phoneLabel );
displayPanel.add( phoneTextField );
add( displayPanel );
queryPanel.setLayout(
new BoxLayout( queryPanel, BoxLayout.X_AXIS) );
queryPanel.setBorder( BorderFactory.createTitled Border(
"Find an entry by last name" ) );
queryLabel.setText( "Last Name:" );
queryPanel.add( Box.createHorizontalStrut( 5 ) );
queryPanel.add( queryLabel );
queryPanel.add( Box.createHorizontalStrut( 10 ) );
queryPanel.add( queryTextField );
queryPanel.add( Box.createHorizontalStrut( 10 ) );
queryButton.setText( "Find" );
queryButton.addActionListe ner(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
queryButtonActionPerformed ( evt );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
queryPanel.add( queryButton );
queryPanel.add( Box.createHorizontalStrut( 5 ) );
add( queryPanel );
browseButton.setText( "Browse All Entries" );
browseButton.addActionList ener(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
browseButtonActionPerforme d( evt );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
add( browseButton );
insertButton.setText( "Insert New Entry" );
insertButton.addActionList ener(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
insertButtonActionPerforme d( evt );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
add( insertButton );
updateButton.setText( "Update Current Entry" );
updateButton.addActionList ener(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
updateButtonActionPerforme d( evt );
} // end method actionPerformed
} // end anonymous inner class
);// end call to ActionListener
add( updateButton );
deleteButton.setText( "Delete Current Entry" );
deleteButton.addActionList ener(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
deleteButtonActionPerforme d( evt );
} // end method actionPerformed
} // end anonymous inner class
);// end call to ActionListener
add( deleteButton );
addWindowListener(
new WindowAdapter()
{
public void windowClosing( WindowEvent evt )
{
System.exit( 0 );
} // end method windowClosing
} // end anonymous inner class
); // end call to addWindowListener
setVisible( true );
} // end no-argument constructor
// handles call when previousButton is clicked
private void previousButtonActionPerfor med( ActionEvent evt )
{
currentEntryIndex--;
if ( currentEntryIndex < 0 )
currentEntryIndex = numberOfEntries - 1;
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
indexTextFieldActionPerfor med( evt );
} // end method previousButtonActionPerfor med
// handles call when nextButton is clicked
private void nextButtonActionPerformed( ActionEvent evt )
{
currentEntryIndex++;
if ( currentEntryIndex >= numberOfEntries )
currentEntryIndex = 0;
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
indexTextFieldActionPerfor med( evt );
} // end method nextButtonActionPerformed
// handles call when queryButton is clicked
private void queryButtonActionPerformed ( ActionEvent evt )
{
results =
personQueries.getPeopleByL astName( queryTextField.getText() );
numberOfEntries = results.size();
if ( numberOfEntries != 0 )
{
currentEntryIndex = 0;
currentEntry = results.get( currentEntryIndex );
idTextField.setText("" + currentEntry.getAddressID( ) );
firstNameTextField.setText ( currentEntry.getFirstName( ) );
lastNameTextField.setText( currentEntry.getLastName() );
emailTextField.setText( currentEntry.getEmail() );
phoneTextField.setText( currentEntry.getPhoneNumbe r() );
maxTextField.setText( "" + numberOfEntries );
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
nextButton.setEnabled( true );
previousButton.setEnabled( true );
} // end if
else
browseButtonActionPerforme d( evt );
} // end method queryButtonActionPerformed
// handles call when a new value is entered in indexTextField
private void indexTextFieldActionPerfor med( ActionEvent evt )
{
currentEntryIndex =
( Integer.parseInt( indexTextField.getText() ) - 1 );
if ( numberOfEntries != 0 && currentEntryIndex < numberOfEntries )
{
currentEntry = results.get( currentEntryIndex );
idTextField.setText("" + currentEntry.getAddressID( ) );
firstNameTextField.setText ( currentEntry.getFirstName( ) );
lastNameTextField.setText( currentEntry.getLastName() );
emailTextField.setText( currentEntry.getEmail() );
phoneTextField.setText( currentEntry.getPhoneNumbe r() );
maxTextField.setText( "" + numberOfEntries );
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
} // end if
} // end method indexTextFieldActionPerfor med
// handles call when browseButton is clicked
private void browseButtonActionPerforme d( ActionEvent evt )
{
try
{
results = personQueries.getAllPeople ();
numberOfEntries = results.size();
if ( numberOfEntries != 0 )
{
currentEntryIndex = 0;
currentEntry = results.get( currentEntryIndex );
idTextField.setText("" + currentEntry.getAddressID( ) );
firstNameTextField.setText ( currentEntry.getFirstName( ) );
lastNameTextField.setText( currentEntry.getLastName() );
emailTextField.setText( currentEntry.getEmail() );
phoneTextField.setText( currentEntry.getPhoneNumbe r() );
maxTextField.setText( "" + numberOfEntries );
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
nextButton.setEnabled( true );
previousButton.setEnabled( true );
} // end if
} // end try
catch ( Exception e )
{
e.printStackTrace();
} // end catch
} // end method browseButtonActionPerforme d
// handles call when insertButton is clicked
private void insertButtonActionPerforme d( ActionEvent evt )
{
int result = personQueries.addPerson( firstNameTextField.getText (),
lastNameTextField.getText( ), emailTextField.getText(),
phoneTextField.getText() );
if ( result == 1 )
JOptionPane.showMessageDia log( this, "Person added!",
"Person added", JOptionPane.PLAIN_MESSAGE );
else
JOptionPane.showMessageDia log( this, "Person not added!",
"Error", JOptionPane.PLAIN_MESSAGE );
browseButtonActionPerforme d( evt );
} // end method insertButtonActionPerforme d
private void updateButtonActionPerforme d( ActionEvent evt )
{
int result = personQueries.updatePerson ( firstNameTextField.getText (),
lastNameTextField.getText( ), emailTextField.getText(),
phoneTextField.getText() );
if ( result == 1 )
JOptionPane.showMessageDia log( this, "Person updated!",
"Person updated", JOptionPane.PLAIN_MESSAGE );
else
JOptionPane.showMessageDia log( this, "Person not updated!",
"Person not updated", JOptionPane.PLAIN_MESSAGE );
updateButtonActionPerforme d( evt );
} // end method updateButtonActionPerforme d
private void deleteButtonActionPerforme d(ActionEv ent evt )
{
int result = personQueries.deletePerson (Integer.p arseInt(id TextField. getText()) );
if ( result == 1 )
JOptionPane.showMessageDia log( this, "Person Deleted!",
"Person Data Updated!", JOptionPane.PLAIN_MESSAGE );
else
JOptionPane.showMessageDia log( this, "Person Data not Deleted!",
"Error", JOptionPane.PLAIN_MESSAGE );
browseButtonActionPerforme d(evt);
} // end method deleteButtonActionPerforme d
public static void main( String args[] )
{
new AddressBookDisplay();
} // end method main
} //
import java.awt.event.ActionEvent ;
import java.awt.event.ActionListe ner;
import java.awt.event.WindowAdapt er;
import java.awt.event.WindowEvent ;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.util.List;
import javax.swing.JButton;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstant s;
import javax.swing.BoxLayout;
import javax.swing.BorderFactory;
import javax.swing.JOptionPane;
public class AddressBookDisplay extends JFrame
{
private Person currentEntry;
private PersonQueries personQueries;
private List< Person > results;
private int numberOfEntries = 0;
private int currentEntryIndex;
private JButton browseButton;
private JLabel emailLabel;
private JTextField emailTextField;
private JLabel firstNameLabel;
private JTextField firstNameTextField;
private JLabel idLabel;
private JTextField idTextField;
private JTextField indexTextField;
private JLabel lastNameLabel;
private JTextField lastNameTextField;
private JTextField maxTextField;
private JButton nextButton;
private JLabel ofLabel;
private JLabel phoneLabel;
private JTextField phoneTextField;
private JButton previousButton;
private JButton queryButton;
private JLabel queryLabel;
private JPanel queryPanel;
private JPanel navigatePanel;
private JPanel displayPanel;
private JTextField queryTextField;
private JButton insertButton;
private JButton updateButton;
private JButton deleteButton;
// no-argument constructor
public AddressBookDisplay()
{
super( "Address Book" );
// establish database connection and set up PreparedStatements
// personQueries = new PersonQueries();
// create GUI
navigatePanel = new JPanel();
previousButton = new JButton();
indexTextField = new JTextField( 2 );
ofLabel = new JLabel();
maxTextField = new JTextField( 2 );
nextButton = new JButton();
displayPanel = new JPanel();
idLabel = new JLabel();
idTextField = new JTextField( 10 );
firstNameLabel = new JLabel();
firstNameTextField = new JTextField( 10 );
lastNameLabel = new JLabel();
lastNameTextField = new JTextField( 10 );
emailLabel = new JLabel();
emailTextField = new JTextField( 10 );
phoneLabel = new JLabel();
phoneTextField = new JTextField( 10 );
queryPanel = new JPanel();
queryLabel = new JLabel();
queryTextField = new JTextField( 10 );
queryButton = new JButton();
browseButton = new JButton();
insertButton = new JButton();
updateButton = new JButton();
deleteButton = new JButton();
setLayout( new FlowLayout( FlowLayout.CENTER, 10, 10 ) );
setSize( 400, 400 );
setResizable( false );
navigatePanel.setLayout(
new BoxLayout( navigatePanel, BoxLayout.X_AXIS ) );
previousButton.setText( "Previous" );
previousButton.setEnabled( false );
previousButton.addActionLi stener(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
previousButtonActionPerfor med( evt );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
navigatePanel.add( previousButton );
navigatePanel.add( Box.createHorizontalStrut( 10 ) );
indexTextField.setHorizont alAlignmen t(
JTextField.CENTER );
indexTextField.addActionLi stener(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
indexTextFieldActionPerfor med( evt );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
navigatePanel.add( indexTextField );
navigatePanel.add( Box.createHorizontalStrut( 10 ) );
ofLabel.setText( "of" );
navigatePanel.add( ofLabel );
navigatePanel.add( Box.createHorizontalStrut( 10 ) );
maxTextField.setHorizontal Alignment(
JTextField.CENTER );
maxTextField.setEditable( false );
navigatePanel.add( maxTextField );
navigatePanel.add( Box.createHorizontalStrut( 10 ) );
nextButton.setText( "Next" );
nextButton.setEnabled( false );
nextButton.addActionListen er(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
nextButtonActionPerformed( evt );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
navigatePanel.add( nextButton );
add( navigatePanel );
displayPanel.setLayout( new GridLayout( 5, 2, 4, 4 ) );
idLabel.setText( "Address ID:" );
displayPanel.add( idLabel );
idTextField.setEditable( false );
displayPanel.add( idTextField );
firstNameLabel.setText( "First Name:" );
displayPanel.add( firstNameLabel );
displayPanel.add( firstNameTextField );
lastNameLabel.setText( "Last Name:" );
displayPanel.add( lastNameLabel );
displayPanel.add( lastNameTextField );
emailLabel.setText( "Email:" );
displayPanel.add( emailLabel );
displayPanel.add( emailTextField );
phoneLabel.setText( "Phone Number:" );
displayPanel.add( phoneLabel );
displayPanel.add( phoneTextField );
add( displayPanel );
queryPanel.setLayout(
new BoxLayout( queryPanel, BoxLayout.X_AXIS) );
queryPanel.setBorder( BorderFactory.createTitled Border(
"Find an entry by last name" ) );
queryLabel.setText( "Last Name:" );
queryPanel.add( Box.createHorizontalStrut( 5 ) );
queryPanel.add( queryLabel );
queryPanel.add( Box.createHorizontalStrut( 10 ) );
queryPanel.add( queryTextField );
queryPanel.add( Box.createHorizontalStrut( 10 ) );
queryButton.setText( "Find" );
queryButton.addActionListe ner(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
queryButtonActionPerformed ( evt );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
queryPanel.add( queryButton );
queryPanel.add( Box.createHorizontalStrut( 5 ) );
add( queryPanel );
browseButton.setText( "Browse All Entries" );
browseButton.addActionList ener(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
browseButtonActionPerforme d( evt );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
add( browseButton );
insertButton.setText( "Insert New Entry" );
insertButton.addActionList ener(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
insertButtonActionPerforme d( evt );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
add( insertButton );
updateButton.setText( "Update Current Entry" );
updateButton.addActionList ener(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
updateButtonActionPerforme d( evt );
} // end method actionPerformed
} // end anonymous inner class
);// end call to ActionListener
add( updateButton );
deleteButton.setText( "Delete Current Entry" );
deleteButton.addActionList ener(
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
deleteButtonActionPerforme d( evt );
} // end method actionPerformed
} // end anonymous inner class
);// end call to ActionListener
add( deleteButton );
addWindowListener(
new WindowAdapter()
{
public void windowClosing( WindowEvent evt )
{
System.exit( 0 );
} // end method windowClosing
} // end anonymous inner class
); // end call to addWindowListener
setVisible( true );
} // end no-argument constructor
// handles call when previousButton is clicked
private void previousButtonActionPerfor med( ActionEvent evt )
{
currentEntryIndex--;
if ( currentEntryIndex < 0 )
currentEntryIndex = numberOfEntries - 1;
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
indexTextFieldActionPerfor med( evt );
} // end method previousButtonActionPerfor med
// handles call when nextButton is clicked
private void nextButtonActionPerformed( ActionEvent evt )
{
currentEntryIndex++;
if ( currentEntryIndex >= numberOfEntries )
currentEntryIndex = 0;
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
indexTextFieldActionPerfor med( evt );
} // end method nextButtonActionPerformed
// handles call when queryButton is clicked
private void queryButtonActionPerformed ( ActionEvent evt )
{
results =
personQueries.getPeopleByL astName( queryTextField.getText() );
numberOfEntries = results.size();
if ( numberOfEntries != 0 )
{
currentEntryIndex = 0;
currentEntry = results.get( currentEntryIndex );
idTextField.setText("" + currentEntry.getAddressID( ) );
firstNameTextField.setText ( currentEntry.getFirstName( ) );
lastNameTextField.setText( currentEntry.getLastName() );
emailTextField.setText( currentEntry.getEmail() );
phoneTextField.setText( currentEntry.getPhoneNumbe r() );
maxTextField.setText( "" + numberOfEntries );
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
nextButton.setEnabled( true );
previousButton.setEnabled( true );
} // end if
else
browseButtonActionPerforme d( evt );
} // end method queryButtonActionPerformed
// handles call when a new value is entered in indexTextField
private void indexTextFieldActionPerfor med( ActionEvent evt )
{
currentEntryIndex =
( Integer.parseInt( indexTextField.getText() ) - 1 );
if ( numberOfEntries != 0 && currentEntryIndex < numberOfEntries )
{
currentEntry = results.get( currentEntryIndex );
idTextField.setText("" + currentEntry.getAddressID( ) );
firstNameTextField.setText ( currentEntry.getFirstName( ) );
lastNameTextField.setText( currentEntry.getLastName() );
emailTextField.setText( currentEntry.getEmail() );
phoneTextField.setText( currentEntry.getPhoneNumbe r() );
maxTextField.setText( "" + numberOfEntries );
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
} // end if
} // end method indexTextFieldActionPerfor med
// handles call when browseButton is clicked
private void browseButtonActionPerforme d( ActionEvent evt )
{
try
{
results = personQueries.getAllPeople ();
numberOfEntries = results.size();
if ( numberOfEntries != 0 )
{
currentEntryIndex = 0;
currentEntry = results.get( currentEntryIndex );
idTextField.setText("" + currentEntry.getAddressID( ) );
firstNameTextField.setText ( currentEntry.getFirstName( ) );
lastNameTextField.setText( currentEntry.getLastName() );
emailTextField.setText( currentEntry.getEmail() );
phoneTextField.setText( currentEntry.getPhoneNumbe r() );
maxTextField.setText( "" + numberOfEntries );
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
nextButton.setEnabled( true );
previousButton.setEnabled( true );
} // end if
} // end try
catch ( Exception e )
{
e.printStackTrace();
} // end catch
} // end method browseButtonActionPerforme d
// handles call when insertButton is clicked
private void insertButtonActionPerforme d( ActionEvent evt )
{
int result = personQueries.addPerson( firstNameTextField.getText (),
lastNameTextField.getText( ), emailTextField.getText(),
phoneTextField.getText() );
if ( result == 1 )
JOptionPane.showMessageDia log( this, "Person added!",
"Person added", JOptionPane.PLAIN_MESSAGE );
else
JOptionPane.showMessageDia log( this, "Person not added!",
"Error", JOptionPane.PLAIN_MESSAGE );
browseButtonActionPerforme d( evt );
} // end method insertButtonActionPerforme d
private void updateButtonActionPerforme d( ActionEvent evt )
{
int result = personQueries.updatePerson ( firstNameTextField.getText (),
lastNameTextField.getText( ), emailTextField.getText(),
phoneTextField.getText() );
if ( result == 1 )
JOptionPane.showMessageDia log( this, "Person updated!",
"Person updated", JOptionPane.PLAIN_MESSAGE );
else
JOptionPane.showMessageDia log( this, "Person not updated!",
"Person not updated", JOptionPane.PLAIN_MESSAGE );
updateButtonActionPerforme d( evt );
} // end method updateButtonActionPerforme d
private void deleteButtonActionPerforme d(ActionEv ent evt )
{
int result = personQueries.deletePerson (Integer.p arseInt(id TextField. getText()) );
if ( result == 1 )
JOptionPane.showMessageDia log( this, "Person Deleted!",
"Person Data Updated!", JOptionPane.PLAIN_MESSAGE );
else
JOptionPane.showMessageDia log( this, "Person Data not Deleted!",
"Error", JOptionPane.PLAIN_MESSAGE );
browseButtonActionPerforme d(evt);
} // end method deleteButtonActionPerforme d
public static void main( String args[] )
{
new AddressBookDisplay();
} // end method main
} //
import java.sql.*;
import java.util.List;
import java.util.ArrayList;
public class PersonQueries
{
private static String URL = "jdbc:derby:AddressBook;cr eate=true" ;
private static final String USERNAME = "deitel";
private static final String PASSWORD = "deitel";
private Connection connection = null; // manages connection
private PreparedStatement selectAllPeople = null;
private PreparedStatement selectPeopleByLastName = null;
private PreparedStatement insertNewPerson = null;
private PreparedStatement updatePerson = null;
private PreparedStatement deletePerson = null;
// constructor
public PersonQueries()
{
try
{
Class.forName("org.apache. derby.jdbc .EmbeddedD river");
connection = DriverManager.getConnectio n( URL, USERNAME, PASSWORD );
// create query that selects all entries in the AddressBook
selectAllPeople =
connection.prepareStatemen t( "SELECT * FROM Addresses" );
// create query that selects entries with a specific last name
selectPeopleByLastName = connection.prepareStatemen t(
"SELECT * FROM Addresses WHERE LastName = ?" );
// create insert that adds a new entry into the database
insertNewPerson = connection.prepareStatemen t(
"INSERT INTO Addresses " +
"( FirstName, LastName, Email, PhoneNumber ) " +
"VALUES ( ?, ?, ?, ? )" );
// create updates current entry in the database
updatePerson = connection.prepareStatemen t(
"UPDATE Addresses " +
"SET LastName = ?, " +
"FirstName = ?, " +
"PhoneNumber = ?, " +
"Email = ?, " +
"WHERE AddressID = ?");
// delete the current entry in the database
deletePerson = connection.prepareStatemen t(
"DELETE FROM Adresses " +
"WHERE ID = ?");
} // end try
catch ( Exception sqlException )
{
sqlException.printStackTra ce();
System.exit( 1 );
} // end catch
} // end PersonQueries constructor
// select all of the addresses in the database
public List< Person > getAllPeople()
{
List< Person > results = null;
ResultSet resultSet = null;
try
{
// executeQuery returns ResultSet containing matching entries
resultSet = selectAllPeople.executeQue ry();
results = new ArrayList< Person >();
while ( resultSet.next() )
{
results.add( new Person(
resultSet.getInt( "addressID" ),
resultSet.getString( "firstName" ),
resultSet.getString( "lastName" ),
resultSet.getString( "email" ),
resultSet.getString( "phoneNumber" ) ) );
} // end while
} // end try
catch ( SQLException sqlException )
{
sqlException.printStackTra ce();
} // end catch
finally
{
try
{
resultSet.close();
} // end try
catch ( SQLException sqlException )
{
sqlException.printStackTra ce();
close();
} // end catch
} // end finally
return results;
} // end method getAllPeople
// select person by last name
public List< Person > getPeopleByLastName( String name )
{
List< Person > results = null;
ResultSet resultSet = null;
try
{
selectPeopleByLastName.set String( 1, name ); // specify last name
// executeQuery returns ResultSet containing matching entries
resultSet = selectPeopleByLastName.exe cuteQuery( );
results = new ArrayList< Person >();
while ( resultSet.next() )
{
results.add( new Person(
resultSet.getInt( "addressID" ),
resultSet.getString( "firstName" ),
resultSet.getString( "lastName" ),
resultSet.getString( "email" ),
resultSet.getString( "phoneNumber" ) ) );
} // end while
} // end try
catch ( SQLException sqlException )
{
sqlException.printStackTra ce();
} // end catch
finally
{
try
{
resultSet.close();
} // end try
catch ( SQLException sqlException )
{
sqlException.printStackTra ce();
close();
} // end catch
} // end finally
return results;
} // end method getPeopleByName
// add an entry
public int addPerson(
String fname, String lname, String email, String num )
{
int result = 0;
// set parameters, then execute insertNewPerson
try
{
insertNewPerson.setString( 1, fname );
insertNewPerson.setString( 2, lname );
insertNewPerson.setString( 3, email );
insertNewPerson.setString( 4, num );
// insert the new entry; returns # of rows updated
result = insertNewPerson.executeUpd ate();
} // end try
catch ( SQLException sqlException )
{
sqlException.printStackTra ce();
close();
} // end catch
return result;
} // end method addPerson
public int updatePerson(
String fname, String lname, String email, String num )
{
int result = 0;
try{
updatePerson.setString(1, fname );
updatePerson.setString(2, lname );
updatePerson.setString(3, email );
updatePerson.setString(4, num );
// update the current entry;
result = updatePerson.executeUpdate ();
} // end try
catch (SQLException e)
{
e.printStackTrace();
} // end catch
return result;
} // end updatePerson
public int deletePerson( int uid )
{
int result = 0;
// set parameterss, then execute editNewPersons
try
{
deletePerson.setInt( 1, uid );
// modify the entry; returns # of rows updated
result = deletePerson.executeUpdate ();
} // end try
catch ( SQLException sqlException )
{
sqlException.printStackTra ce();
close();
} // end catch
return result;
} // end method updatePerson
// close the database connection
public void close()
{
try
{
connection.close();
} // end try
catch ( SQLException sqlException )
{
sqlException.printStackTra ce();
} // end catch
} // end method close
} // end class PersonQueries
address.sql
derby.log
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerExcep
at AddressBookDisplay$9.windo
at java.awt.AWTEventMulticast
at java.awt.Window.processWin
at javax.swing.JFrame.process
at java.awt.Window.processEve
at java.awt.Component.dispatc
at java.awt.Container.dispatc
at java.awt.Window.dispatchEv
at java.awt.Component.dispatc
at java.awt.EventQueue.dispat
at java.awt.EventQueue.access
at java.awt.EventQueue$1.run(
at java.awt.EventQueue$1.run(
at java.security.AccessContro
at java.security.AccessContro
at java.security.AccessContro
at java.awt.EventQueue$2.run(
at java.awt.EventQueue$2.run(
at java.security.AccessContro
at java.security.AccessContro
at java.awt.EventQueue.dispat
at java.awt.EventDispatchThre
at java.awt.EventDispatchThre
at java.awt.EventDispatchThre
at java.awt.EventDispatchThre
at java.awt.EventDispatchThre
at java.awt.EventDispatchThre
import java.awt.event.ActionEvent
import java.awt.event.ActionListe
import java.awt.event.WindowAdapt
import java.awt.event.WindowEvent
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.util.List;
import javax.swing.JButton;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstant
import javax.swing.BoxLayout;
import javax.swing.BorderFactory;
import javax.swing.JOptionPane;
public class AddressBookDisplay extends JFrame
{
private Person currentEntry;
private PersonQueries personQueries;
private List< Person > results;
private int numberOfEntries = 0;
private int currentEntryIndex;
private JButton browseButton;
private JLabel emailLabel;
private JTextField emailTextField;
private JLabel firstNameLabel;
private JTextField firstNameTextField;
private JLabel idLabel;
private JTextField idTextField;
private JTextField indexTextField;
private JLabel lastNameLabel;
private JTextField lastNameTextField;
private JTextField maxTextField;
private JButton nextButton;
private JLabel ofLabel;
private JLabel phoneLabel;
private JTextField phoneTextField;
private JButton previousButton;
private JButton queryButton;
private JLabel queryLabel;
private JPanel queryPanel;
private JPanel navigatePanel;
private JPanel displayPanel;
private JTextField queryTextField;
private JButton insertButton;
private JButton updateButton;
private JButton deleteButton;
// no-argument constructor
public AddressBookDisplay()
{
super( "Address Book" );
// establish database connection and set up PreparedStatements
// personQueries = new PersonQueries();
// create GUI
navigatePanel = new JPanel();
previousButton = new JButton();
indexTextField = new JTextField( 2 );
ofLabel = new JLabel();
maxTextField = new JTextField( 2 );
nextButton = new JButton();
displayPanel = new JPanel();
idLabel = new JLabel();
idTextField = new JTextField( 10 );
firstNameLabel = new JLabel();
firstNameTextField = new JTextField( 10 );
lastNameLabel = new JLabel();
lastNameTextField = new JTextField( 10 );
emailLabel = new JLabel();
emailTextField = new JTextField( 10 );
phoneLabel = new JLabel();
phoneTextField = new JTextField( 10 );
queryPanel = new JPanel();
queryLabel = new JLabel();
queryTextField = new JTextField( 10 );
queryButton = new JButton();
browseButton = new JButton();
insertButton = new JButton();
updateButton = new JButton();
deleteButton = new JButton();
setLayout( new FlowLayout( FlowLayout.CENTER, 10, 10 ) );
setSize( 400, 400 );
setResizable( false );
navigatePanel.setLayout(
new BoxLayout( navigatePanel, BoxLayout.X_AXIS ) );
previousButton.setText( "Previous" );
previousButton.setEnabled(
previousButton.addActionLi
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
previousButtonActionPerfor
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
navigatePanel.add( previousButton );
navigatePanel.add( Box.createHorizontalStrut(
indexTextField.setHorizont
JTextField.CENTER );
indexTextField.addActionLi
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
indexTextFieldActionPerfor
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
navigatePanel.add( indexTextField );
navigatePanel.add( Box.createHorizontalStrut(
ofLabel.setText( "of" );
navigatePanel.add( ofLabel );
navigatePanel.add( Box.createHorizontalStrut(
maxTextField.setHorizontal
JTextField.CENTER );
maxTextField.setEditable( false );
navigatePanel.add( maxTextField );
navigatePanel.add( Box.createHorizontalStrut(
nextButton.setText( "Next" );
nextButton.setEnabled( false );
nextButton.addActionListen
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
nextButtonActionPerformed(
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
navigatePanel.add( nextButton );
add( navigatePanel );
displayPanel.setLayout( new GridLayout( 5, 2, 4, 4 ) );
idLabel.setText( "Address ID:" );
displayPanel.add( idLabel );
idTextField.setEditable( false );
displayPanel.add( idTextField );
firstNameLabel.setText( "First Name:" );
displayPanel.add( firstNameLabel );
displayPanel.add( firstNameTextField );
lastNameLabel.setText( "Last Name:" );
displayPanel.add( lastNameLabel );
displayPanel.add( lastNameTextField );
emailLabel.setText( "Email:" );
displayPanel.add( emailLabel );
displayPanel.add( emailTextField );
phoneLabel.setText( "Phone Number:" );
displayPanel.add( phoneLabel );
displayPanel.add( phoneTextField );
add( displayPanel );
queryPanel.setLayout(
new BoxLayout( queryPanel, BoxLayout.X_AXIS) );
queryPanel.setBorder( BorderFactory.createTitled
"Find an entry by last name" ) );
queryLabel.setText( "Last Name:" );
queryPanel.add( Box.createHorizontalStrut(
queryPanel.add( queryLabel );
queryPanel.add( Box.createHorizontalStrut(
queryPanel.add( queryTextField );
queryPanel.add( Box.createHorizontalStrut(
queryButton.setText( "Find" );
queryButton.addActionListe
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
queryButtonActionPerformed
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
queryPanel.add( queryButton );
queryPanel.add( Box.createHorizontalStrut(
add( queryPanel );
browseButton.setText( "Browse All Entries" );
browseButton.addActionList
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
browseButtonActionPerforme
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
add( browseButton );
insertButton.setText( "Insert New Entry" );
insertButton.addActionList
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
insertButtonActionPerforme
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
add( insertButton );
updateButton.setText( "Update Current Entry" );
updateButton.addActionList
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
updateButtonActionPerforme
} // end method actionPerformed
} // end anonymous inner class
);// end call to ActionListener
add( updateButton );
deleteButton.setText( "Delete Current Entry" );
deleteButton.addActionList
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
deleteButtonActionPerforme
} // end method actionPerformed
} // end anonymous inner class
);// end call to ActionListener
add( deleteButton );
addWindowListener(
new WindowAdapter()
{
public void windowClosing( WindowEvent evt )
{
System.exit( 0 );
} // end method windowClosing
} // end anonymous inner class
); // end call to addWindowListener
setVisible( true );
} // end no-argument constructor
// handles call when previousButton is clicked
private void previousButtonActionPerfor
{
currentEntryIndex--;
if ( currentEntryIndex < 0 )
currentEntryIndex = numberOfEntries - 1;
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
indexTextFieldActionPerfor
} // end method previousButtonActionPerfor
// handles call when nextButton is clicked
private void nextButtonActionPerformed(
{
currentEntryIndex++;
if ( currentEntryIndex >= numberOfEntries )
currentEntryIndex = 0;
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
indexTextFieldActionPerfor
} // end method nextButtonActionPerformed
// handles call when queryButton is clicked
private void queryButtonActionPerformed
{
results =
personQueries.getPeopleByL
numberOfEntries = results.size();
if ( numberOfEntries != 0 )
{
currentEntryIndex = 0;
currentEntry = results.get( currentEntryIndex );
idTextField.setText("" + currentEntry.getAddressID(
firstNameTextField.setText
lastNameTextField.setText(
emailTextField.setText( currentEntry.getEmail() );
phoneTextField.setText( currentEntry.getPhoneNumbe
maxTextField.setText( "" + numberOfEntries );
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
nextButton.setEnabled( true );
previousButton.setEnabled(
} // end if
else
browseButtonActionPerforme
} // end method queryButtonActionPerformed
// handles call when a new value is entered in indexTextField
private void indexTextFieldActionPerfor
{
currentEntryIndex =
( Integer.parseInt( indexTextField.getText() ) - 1 );
if ( numberOfEntries != 0 && currentEntryIndex < numberOfEntries )
{
currentEntry = results.get( currentEntryIndex );
idTextField.setText("" + currentEntry.getAddressID(
firstNameTextField.setText
lastNameTextField.setText(
emailTextField.setText( currentEntry.getEmail() );
phoneTextField.setText( currentEntry.getPhoneNumbe
maxTextField.setText( "" + numberOfEntries );
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
} // end if
} // end method indexTextFieldActionPerfor
// handles call when browseButton is clicked
private void browseButtonActionPerforme
{
try
{
results = personQueries.getAllPeople
numberOfEntries = results.size();
if ( numberOfEntries != 0 )
{
currentEntryIndex = 0;
currentEntry = results.get( currentEntryIndex );
idTextField.setText("" + currentEntry.getAddressID(
firstNameTextField.setText
lastNameTextField.setText(
emailTextField.setText( currentEntry.getEmail() );
phoneTextField.setText( currentEntry.getPhoneNumbe
maxTextField.setText( "" + numberOfEntries );
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
nextButton.setEnabled( true );
previousButton.setEnabled(
} // end if
} // end try
catch ( Exception e )
{
e.printStackTrace();
} // end catch
} // end method browseButtonActionPerforme
// handles call when insertButton is clicked
private void insertButtonActionPerforme
{
int result = personQueries.addPerson( firstNameTextField.getText
lastNameTextField.getText(
phoneTextField.getText() );
if ( result == 1 )
JOptionPane.showMessageDia
"Person added", JOptionPane.PLAIN_MESSAGE );
else
JOptionPane.showMessageDia
"Error", JOptionPane.PLAIN_MESSAGE );
browseButtonActionPerforme
} // end method insertButtonActionPerforme
private void updateButtonActionPerforme
{
int result = personQueries.updatePerson
lastNameTextField.getText(
phoneTextField.getText() );
if ( result == 1 )
JOptionPane.showMessageDia
"Person updated", JOptionPane.PLAIN_MESSAGE );
else
JOptionPane.showMessageDia
"Person not updated", JOptionPane.PLAIN_MESSAGE );
updateButtonActionPerforme
} // end method updateButtonActionPerforme
private void deleteButtonActionPerforme
{
int result = personQueries.deletePerson
if ( result == 1 )
JOptionPane.showMessageDia
"Person Data Updated!", JOptionPane.PLAIN_MESSAGE );
else
JOptionPane.showMessageDia
"Error", JOptionPane.PLAIN_MESSAGE );
browseButtonActionPerforme
} // end method deleteButtonActionPerforme
public static void main( String args[] )
{
new AddressBookDisplay();
} // end method main
} //
import java.awt.event.ActionEvent
import java.awt.event.ActionListe
import java.awt.event.WindowAdapt
import java.awt.event.WindowEvent
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.util.List;
import javax.swing.JButton;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstant
import javax.swing.BoxLayout;
import javax.swing.BorderFactory;
import javax.swing.JOptionPane;
public class AddressBookDisplay extends JFrame
{
private Person currentEntry;
private PersonQueries personQueries;
private List< Person > results;
private int numberOfEntries = 0;
private int currentEntryIndex;
private JButton browseButton;
private JLabel emailLabel;
private JTextField emailTextField;
private JLabel firstNameLabel;
private JTextField firstNameTextField;
private JLabel idLabel;
private JTextField idTextField;
private JTextField indexTextField;
private JLabel lastNameLabel;
private JTextField lastNameTextField;
private JTextField maxTextField;
private JButton nextButton;
private JLabel ofLabel;
private JLabel phoneLabel;
private JTextField phoneTextField;
private JButton previousButton;
private JButton queryButton;
private JLabel queryLabel;
private JPanel queryPanel;
private JPanel navigatePanel;
private JPanel displayPanel;
private JTextField queryTextField;
private JButton insertButton;
private JButton updateButton;
private JButton deleteButton;
// no-argument constructor
public AddressBookDisplay()
{
super( "Address Book" );
// establish database connection and set up PreparedStatements
// personQueries = new PersonQueries();
// create GUI
navigatePanel = new JPanel();
previousButton = new JButton();
indexTextField = new JTextField( 2 );
ofLabel = new JLabel();
maxTextField = new JTextField( 2 );
nextButton = new JButton();
displayPanel = new JPanel();
idLabel = new JLabel();
idTextField = new JTextField( 10 );
firstNameLabel = new JLabel();
firstNameTextField = new JTextField( 10 );
lastNameLabel = new JLabel();
lastNameTextField = new JTextField( 10 );
emailLabel = new JLabel();
emailTextField = new JTextField( 10 );
phoneLabel = new JLabel();
phoneTextField = new JTextField( 10 );
queryPanel = new JPanel();
queryLabel = new JLabel();
queryTextField = new JTextField( 10 );
queryButton = new JButton();
browseButton = new JButton();
insertButton = new JButton();
updateButton = new JButton();
deleteButton = new JButton();
setLayout( new FlowLayout( FlowLayout.CENTER, 10, 10 ) );
setSize( 400, 400 );
setResizable( false );
navigatePanel.setLayout(
new BoxLayout( navigatePanel, BoxLayout.X_AXIS ) );
previousButton.setText( "Previous" );
previousButton.setEnabled(
previousButton.addActionLi
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
previousButtonActionPerfor
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
navigatePanel.add( previousButton );
navigatePanel.add( Box.createHorizontalStrut(
indexTextField.setHorizont
JTextField.CENTER );
indexTextField.addActionLi
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
indexTextFieldActionPerfor
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
navigatePanel.add( indexTextField );
navigatePanel.add( Box.createHorizontalStrut(
ofLabel.setText( "of" );
navigatePanel.add( ofLabel );
navigatePanel.add( Box.createHorizontalStrut(
maxTextField.setHorizontal
JTextField.CENTER );
maxTextField.setEditable( false );
navigatePanel.add( maxTextField );
navigatePanel.add( Box.createHorizontalStrut(
nextButton.setText( "Next" );
nextButton.setEnabled( false );
nextButton.addActionListen
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
nextButtonActionPerformed(
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
navigatePanel.add( nextButton );
add( navigatePanel );
displayPanel.setLayout( new GridLayout( 5, 2, 4, 4 ) );
idLabel.setText( "Address ID:" );
displayPanel.add( idLabel );
idTextField.setEditable( false );
displayPanel.add( idTextField );
firstNameLabel.setText( "First Name:" );
displayPanel.add( firstNameLabel );
displayPanel.add( firstNameTextField );
lastNameLabel.setText( "Last Name:" );
displayPanel.add( lastNameLabel );
displayPanel.add( lastNameTextField );
emailLabel.setText( "Email:" );
displayPanel.add( emailLabel );
displayPanel.add( emailTextField );
phoneLabel.setText( "Phone Number:" );
displayPanel.add( phoneLabel );
displayPanel.add( phoneTextField );
add( displayPanel );
queryPanel.setLayout(
new BoxLayout( queryPanel, BoxLayout.X_AXIS) );
queryPanel.setBorder( BorderFactory.createTitled
"Find an entry by last name" ) );
queryLabel.setText( "Last Name:" );
queryPanel.add( Box.createHorizontalStrut(
queryPanel.add( queryLabel );
queryPanel.add( Box.createHorizontalStrut(
queryPanel.add( queryTextField );
queryPanel.add( Box.createHorizontalStrut(
queryButton.setText( "Find" );
queryButton.addActionListe
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
queryButtonActionPerformed
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
queryPanel.add( queryButton );
queryPanel.add( Box.createHorizontalStrut(
add( queryPanel );
browseButton.setText( "Browse All Entries" );
browseButton.addActionList
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
browseButtonActionPerforme
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
add( browseButton );
insertButton.setText( "Insert New Entry" );
insertButton.addActionList
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
insertButtonActionPerforme
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
add( insertButton );
updateButton.setText( "Update Current Entry" );
updateButton.addActionList
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
updateButtonActionPerforme
} // end method actionPerformed
} // end anonymous inner class
);// end call to ActionListener
add( updateButton );
deleteButton.setText( "Delete Current Entry" );
deleteButton.addActionList
new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
deleteButtonActionPerforme
} // end method actionPerformed
} // end anonymous inner class
);// end call to ActionListener
add( deleteButton );
addWindowListener(
new WindowAdapter()
{
public void windowClosing( WindowEvent evt )
{
System.exit( 0 );
} // end method windowClosing
} // end anonymous inner class
); // end call to addWindowListener
setVisible( true );
} // end no-argument constructor
// handles call when previousButton is clicked
private void previousButtonActionPerfor
{
currentEntryIndex--;
if ( currentEntryIndex < 0 )
currentEntryIndex = numberOfEntries - 1;
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
indexTextFieldActionPerfor
} // end method previousButtonActionPerfor
// handles call when nextButton is clicked
private void nextButtonActionPerformed(
{
currentEntryIndex++;
if ( currentEntryIndex >= numberOfEntries )
currentEntryIndex = 0;
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
indexTextFieldActionPerfor
} // end method nextButtonActionPerformed
// handles call when queryButton is clicked
private void queryButtonActionPerformed
{
results =
personQueries.getPeopleByL
numberOfEntries = results.size();
if ( numberOfEntries != 0 )
{
currentEntryIndex = 0;
currentEntry = results.get( currentEntryIndex );
idTextField.setText("" + currentEntry.getAddressID(
firstNameTextField.setText
lastNameTextField.setText(
emailTextField.setText( currentEntry.getEmail() );
phoneTextField.setText( currentEntry.getPhoneNumbe
maxTextField.setText( "" + numberOfEntries );
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
nextButton.setEnabled( true );
previousButton.setEnabled(
} // end if
else
browseButtonActionPerforme
} // end method queryButtonActionPerformed
// handles call when a new value is entered in indexTextField
private void indexTextFieldActionPerfor
{
currentEntryIndex =
( Integer.parseInt( indexTextField.getText() ) - 1 );
if ( numberOfEntries != 0 && currentEntryIndex < numberOfEntries )
{
currentEntry = results.get( currentEntryIndex );
idTextField.setText("" + currentEntry.getAddressID(
firstNameTextField.setText
lastNameTextField.setText(
emailTextField.setText( currentEntry.getEmail() );
phoneTextField.setText( currentEntry.getPhoneNumbe
maxTextField.setText( "" + numberOfEntries );
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
} // end if
} // end method indexTextFieldActionPerfor
// handles call when browseButton is clicked
private void browseButtonActionPerforme
{
try
{
results = personQueries.getAllPeople
numberOfEntries = results.size();
if ( numberOfEntries != 0 )
{
currentEntryIndex = 0;
currentEntry = results.get( currentEntryIndex );
idTextField.setText("" + currentEntry.getAddressID(
firstNameTextField.setText
lastNameTextField.setText(
emailTextField.setText( currentEntry.getEmail() );
phoneTextField.setText( currentEntry.getPhoneNumbe
maxTextField.setText( "" + numberOfEntries );
indexTextField.setText( "" + ( currentEntryIndex + 1 ) );
nextButton.setEnabled( true );
previousButton.setEnabled(
} // end if
} // end try
catch ( Exception e )
{
e.printStackTrace();
} // end catch
} // end method browseButtonActionPerforme
// handles call when insertButton is clicked
private void insertButtonActionPerforme
{
int result = personQueries.addPerson( firstNameTextField.getText
lastNameTextField.getText(
phoneTextField.getText() );
if ( result == 1 )
JOptionPane.showMessageDia
"Person added", JOptionPane.PLAIN_MESSAGE );
else
JOptionPane.showMessageDia
"Error", JOptionPane.PLAIN_MESSAGE );
browseButtonActionPerforme
} // end method insertButtonActionPerforme
private void updateButtonActionPerforme
{
int result = personQueries.updatePerson
lastNameTextField.getText(
phoneTextField.getText() );
if ( result == 1 )
JOptionPane.showMessageDia
"Person updated", JOptionPane.PLAIN_MESSAGE );
else
JOptionPane.showMessageDia
"Person not updated", JOptionPane.PLAIN_MESSAGE );
updateButtonActionPerforme
} // end method updateButtonActionPerforme
private void deleteButtonActionPerforme
{
int result = personQueries.deletePerson
if ( result == 1 )
JOptionPane.showMessageDia
"Person Data Updated!", JOptionPane.PLAIN_MESSAGE );
else
JOptionPane.showMessageDia
"Error", JOptionPane.PLAIN_MESSAGE );
browseButtonActionPerforme
} // end method deleteButtonActionPerforme
public static void main( String args[] )
{
new AddressBookDisplay();
} // end method main
} //
import java.sql.*;
import java.util.List;
import java.util.ArrayList;
public class PersonQueries
{
private static String URL = "jdbc:derby:AddressBook;cr
private static final String USERNAME = "deitel";
private static final String PASSWORD = "deitel";
private Connection connection = null; // manages connection
private PreparedStatement selectAllPeople = null;
private PreparedStatement selectPeopleByLastName = null;
private PreparedStatement insertNewPerson = null;
private PreparedStatement updatePerson = null;
private PreparedStatement deletePerson = null;
// constructor
public PersonQueries()
{
try
{
Class.forName("org.apache.
connection = DriverManager.getConnectio
// create query that selects all entries in the AddressBook
selectAllPeople =
connection.prepareStatemen
// create query that selects entries with a specific last name
selectPeopleByLastName = connection.prepareStatemen
"SELECT * FROM Addresses WHERE LastName = ?" );
// create insert that adds a new entry into the database
insertNewPerson = connection.prepareStatemen
"INSERT INTO Addresses " +
"( FirstName, LastName, Email, PhoneNumber ) " +
"VALUES ( ?, ?, ?, ? )" );
// create updates current entry in the database
updatePerson = connection.prepareStatemen
"UPDATE Addresses " +
"SET LastName = ?, " +
"FirstName = ?, " +
"PhoneNumber = ?, " +
"Email = ?, " +
"WHERE AddressID = ?");
// delete the current entry in the database
deletePerson = connection.prepareStatemen
"DELETE FROM Adresses " +
"WHERE ID = ?");
} // end try
catch ( Exception sqlException )
{
sqlException.printStackTra
System.exit( 1 );
} // end catch
} // end PersonQueries constructor
// select all of the addresses in the database
public List< Person > getAllPeople()
{
List< Person > results = null;
ResultSet resultSet = null;
try
{
// executeQuery returns ResultSet containing matching entries
resultSet = selectAllPeople.executeQue
results = new ArrayList< Person >();
while ( resultSet.next() )
{
results.add( new Person(
resultSet.getInt( "addressID" ),
resultSet.getString( "firstName" ),
resultSet.getString( "lastName" ),
resultSet.getString( "email" ),
resultSet.getString( "phoneNumber" ) ) );
} // end while
} // end try
catch ( SQLException sqlException )
{
sqlException.printStackTra
} // end catch
finally
{
try
{
resultSet.close();
} // end try
catch ( SQLException sqlException )
{
sqlException.printStackTra
close();
} // end catch
} // end finally
return results;
} // end method getAllPeople
// select person by last name
public List< Person > getPeopleByLastName( String name )
{
List< Person > results = null;
ResultSet resultSet = null;
try
{
selectPeopleByLastName.set
// executeQuery returns ResultSet containing matching entries
resultSet = selectPeopleByLastName.exe
results = new ArrayList< Person >();
while ( resultSet.next() )
{
results.add( new Person(
resultSet.getInt( "addressID" ),
resultSet.getString( "firstName" ),
resultSet.getString( "lastName" ),
resultSet.getString( "email" ),
resultSet.getString( "phoneNumber" ) ) );
} // end while
} // end try
catch ( SQLException sqlException )
{
sqlException.printStackTra
} // end catch
finally
{
try
{
resultSet.close();
} // end try
catch ( SQLException sqlException )
{
sqlException.printStackTra
close();
} // end catch
} // end finally
return results;
} // end method getPeopleByName
// add an entry
public int addPerson(
String fname, String lname, String email, String num )
{
int result = 0;
// set parameters, then execute insertNewPerson
try
{
insertNewPerson.setString(
insertNewPerson.setString(
insertNewPerson.setString(
insertNewPerson.setString(
// insert the new entry; returns # of rows updated
result = insertNewPerson.executeUpd
} // end try
catch ( SQLException sqlException )
{
sqlException.printStackTra
close();
} // end catch
return result;
} // end method addPerson
public int updatePerson(
String fname, String lname, String email, String num )
{
int result = 0;
try{
updatePerson.setString(1, fname );
updatePerson.setString(2, lname );
updatePerson.setString(3, email );
updatePerson.setString(4, num );
// update the current entry;
result = updatePerson.executeUpdate
} // end try
catch (SQLException e)
{
e.printStackTrace();
} // end catch
return result;
} // end updatePerson
public int deletePerson( int uid )
{
int result = 0;
// set parameterss, then execute editNewPersons
try
{
deletePerson.setInt( 1, uid );
// modify the entry; returns # of rows updated
result = deletePerson.executeUpdate
} // end try
catch ( SQLException sqlException )
{
sqlException.printStackTra
close();
} // end catch
return result;
} // end method updatePerson
// close the database connection
public void close()
{
try
{
connection.close();
} // end try
catch ( SQLException sqlException )
{
sqlException.printStackTra
} // end catch
} // end method close
} // end class PersonQueries
address.sql
derby.log
when does such exception happen?
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
You need to uncomment this line:
personQueries = new PersonQueries();
It is commented oyut is your code, when you then try execute the method on personqueries istance which was not create - it cauases NullPointer
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
No. I made some changes. It includes the deletePerson code, also.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Now, I think the reason we commented out // personQueries = new PersonQueries(); was because of this error at this line in PersonQueries
Class.forName("org.apache. derby.jdbc .EmbeddedD river");
This is the compilation error.
java.lang.ClassNotFoundExc eption: org.apache.derby.jdbc.Embe ddedDriver
at java.net.URLClassLoader$1. run(URLCla ssLoader.j ava:202)
at java.security.AccessContro ller.doPri vileged(Na tive Method)
at java.net.URLClassLoader.fi ndClass(UR LClassLoad er.java:19 0)
at java.lang.ClassLoader.load Class(Clas sLoader.ja va:306)
at sun.misc.Launcher$AppClass Loader.loa dClass(Lau ncher.java :301)
at java.lang.ClassLoader.load Class(Clas sLoader.ja va:247)
at java.lang.Class.forName0(N ative Method)
at java.lang.Class.forName(Cl ass.java:1 69)
at PersonQueries.<init>(Perso nQueries.j ava:31)
at AddressBookDisplay.<init>( AddressBoo kDisplay.j ava:67)
at AddressBookDisplay.main(Ad dressBookD isplay.jav a:422)
----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.
Class.forName("org.apache.
This is the compilation error.
java.lang.ClassNotFoundExc
at java.net.URLClassLoader$1.
at java.security.AccessContro
at java.net.URLClassLoader.fi
at java.lang.ClassLoader.load
at sun.misc.Launcher$AppClass
at java.lang.ClassLoader.load
at java.lang.Class.forName0(N
at java.lang.Class.forName(Cl
at PersonQueries.<init>(Perso
at AddressBookDisplay.<init>(
at AddressBookDisplay.main(Ad
----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I downloaded the jar file. I put it in the
CLASSPATH .;C:\mysql-connector-java- 5.1.18\mys ql-connect or-java-5. 1.18-bin.j ar;C:\derb y-10.5.3.0 _1.jar
Is this correct. Do I need to add something else?
CLASSPATH .;C:\mysql-connector-java-
Is this correct. Do I need to add something else?
You need to make sure that you have this jar in the root of of your C: drive at C:\derby-10.5.3.0_1.jar
And this would be good if you do it on cmmmand line
If you are doing it in IDE - you should do browsing as it is methioned above - and they will create CLASSPATH
for you
And this would be good if you do it on cmmmand line
If you are doing it in IDE - you should do browsing as it is methioned above - and they will create CLASSPATH
for you
ASKER
At the ij command line. I get a message that says the AddressBook is not created. How do I create this database with the bat files.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I am still getting the class not found error. I make a connection to a database. I do not know what could possibly be the problem. Can you help?
which class you are not finding?
How can there be class not found for the driver if you are connecting to database and it says that AddressBook is not ccreated - itmeans
it passed the point abourt driver; which class is not found?
How can there be class not found for the driver if you are connecting to database and it says that AddressBook is not ccreated - itmeans
it passed the point abourt driver; which class is not found?
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
These are the commands according to the book that I have to take to start the derby
cd C:\Progam Files\Sun\JavaDB\bin
setEmbeddedCP.bat
cd C:\Documents and Settings\Administrator\My Documents\AddressBook Modification-28.8_BP
"C:\Program Files\Sun\JavaDB\bin\ij"
connect 'jdbc:derby;AddressBook;cr eate=true; user=deite l;password =deitel';
run address.sql;
exit;
cd C:\Progam Files\Sun\JavaDB\bin
setEmbeddedCP.bat
cd C:\Documents and Settings\Administrator\My Documents\AddressBook Modification-28.8_BP
"C:\Program Files\Sun\JavaDB\bin\ij"
connect 'jdbc:derby;AddressBook;cr
run address.sql;
exit;
ASKER
It is the same message as before.
java.lang.ClassNotFoundExc eption: org.apache.derby.jdbc.Embe ddedDriver
at java.net.URLClassLoader$1. run(URLCla ssLoader.j ava:202)
at java.security.AccessContro ller.doPri vileged(Na tive Method)
at java.net.URLClassLoader.fi ndClass(UR LClassLoad er.java:19 0)
at java.lang.ClassLoader.load Class(Clas sLoader.ja va:306)
at sun.misc.Launcher$AppClass Loader.loa dClass(Lau ncher.java :301)
at java.lang.ClassLoader.load Class(Clas sLoader.ja va:247)
at java.lang.Class.forName0(N ative Method)
at java.lang.Class.forName(Cl ass.java:1 69)
at PersonQueries.<init>(Perso nQueries.j ava:31)
at AddressBookDisplay.<init>( AddressBoo kDisplay.j ava:67)
at AddressBookDisplay.main(Ad dressBookD isplay.jav a:422)
java.lang.ClassNotFoundExc
at java.net.URLClassLoader$1.
at java.security.AccessContro
at java.net.URLClassLoader.fi
at java.lang.ClassLoader.load
at sun.misc.Launcher$AppClass
at java.lang.ClassLoader.load
at java.lang.Class.forName0(N
at java.lang.Class.forName(Cl
at PersonQueries.<init>(Perso
at AddressBookDisplay.<init>(
at AddressBookDisplay.main(Ad
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I see this message when I compile the AddressBookDisplay.java file. I use the connect 'jdbc:derby;AddressBook;cr eate=true; user=deite l;password =deitel'; at the command line when I set up the connection to the database.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I am running from the jGrasp.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I am working in a virtual environment on Windows XP. Which setting are you talking about. The system settings?
ASKER
This is the ClassPath for the .;C:\mysql-connector-java- 5.1.18\mys ql-connect or-java-5. 1.18-bin.j ar;C:\derb y-10.5.3.0 _1.jar
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
OK.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Finished with JGrasp settings. Did not execute yet.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
----jGRASP exec: java AddressBookDisplay
----jGRASP: operation complete.
I did not see the GUI. But this is the output.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I am sorry it did not finish executing this is the Exception errors.
----jGRASP exec: java AddressBookDisplay
----jGRASP: operation complete.
----jGRASP exec: java AddressBookDisplay
java.sql.SQLException: Schema 'DEITEL' already exists.
at org.apache.derby.impl.jdbc .SQLExcept ionFactory 40.getSQLE xception(U nknown Source)
at org.apache.derby.impl.jdbc .Util.gene rateCsSQLE xception(U nknown Source)
at org.apache.derby.impl.jdbc .Transacti onResource Impl.wrapI nSQLExcept ion(Unknow n Source)
at org.apache.derby.impl.jdbc .Transacti onResource Impl.handl eException (Unknown Source)
at org.apache.derby.impl.jdbc .EmbedConn ection.han dleExcepti on(Unknown Source)
at org.apache.derby.impl.jdbc .Connectio nChild.han dleExcepti on(Unknown Source)
at org.apache.derby.impl.jdbc .EmbedStat ement.exec uteStateme nt(Unknown Source)
at org.apache.derby.impl.jdbc .EmbedStat ement.exec ute(Unknow n Source)
at org.apache.derby.impl.jdbc .EmbedStat ement.exec uteUpdate( Unknown Source)
at PersonQueries.<init>(Perso nQueries.j ava:35)
at AddressBookDisplay.<init>( AddressBoo kDisplay.j ava:67)
at AddressBookDisplay.main(Ad dressBookD isplay.jav a:422)
Caused by: java.sql.SQLException: Schema 'DEITEL' already exists.
at org.apache.derby.impl.jdbc .SQLExcept ionFactory .getSQLExc eption(Unk nown Source)
at org.apache.derby.impl.jdbc .SQLExcept ionFactory 40.wrapArg sForTransp ortAcrossD RDA(Unknow n Source)
... 12 more
Caused by: ERROR X0Y68: Schema 'DEITEL' already exists.
at org.apache.derby.iapi.erro r.Standard Exception. newExcepti on(Unknown Source)
at org.apache.derby.impl.sql. execute.Cr eateSchema ConstantAc tion.execu teConstant ActionMini on(Unknown Source)
at org.apache.derby.impl.sql. execute.Cr eateSchema ConstantAc tion.execu teConstant Action(Unk nown Source)
at org.apache.derby.impl.sql. execute.Mi scResultSe t.open(Unk nown Source)
at org.apache.derby.impl.sql. GenericPre paredState ment.execu teStmt(Unk nown Source)
at org.apache.derby.impl.sql. GenericPre paredState ment.execu te(Unknown Source)
... 6 more
----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.
----jGRASP exec: java AddressBookDisplay
----jGRASP: operation complete.
----jGRASP exec: java AddressBookDisplay
java.sql.SQLException: Schema 'DEITEL' already exists.
at org.apache.derby.impl.jdbc
at org.apache.derby.impl.jdbc
at org.apache.derby.impl.jdbc
at org.apache.derby.impl.jdbc
at org.apache.derby.impl.jdbc
at org.apache.derby.impl.jdbc
at org.apache.derby.impl.jdbc
at org.apache.derby.impl.jdbc
at org.apache.derby.impl.jdbc
at PersonQueries.<init>(Perso
at AddressBookDisplay.<init>(
at AddressBookDisplay.main(Ad
Caused by: java.sql.SQLException: Schema 'DEITEL' already exists.
at org.apache.derby.impl.jdbc
at org.apache.derby.impl.jdbc
... 12 more
Caused by: ERROR X0Y68: Schema 'DEITEL' already exists.
at org.apache.derby.iapi.erro
at org.apache.derby.impl.sql.
at org.apache.derby.impl.sql.
at org.apache.derby.impl.sql.
at org.apache.derby.impl.sql.
at org.apache.derby.impl.sql.
... 6 more
----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Oh my God that was it. I entered a person and it said the person was added, So explain to me what I need to do and what just happened.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER