assaultkitty
asked on
AddresBook Modification 28.7
This program is an AddressBook Modification: Update an Existing Entry: I must modify the program in Figs 28.30-Fig28.32 to provide a JButton that allows the user to call a method updatePerson in PersonQueries class to update the current entry in the AddressBook database. I cannot connect to the address database. The program compiles without errors but I do not know what happens when the program runs. Can someone help me?
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;
// 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();
setLayout( new FlowLayout( FlowLayout.CENTER, 10, 10 ) );
setSize( 400, 300 );
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 );
addWindowListener(
new WindowAdapter()
{
public void windowClosing( WindowEvent evt )
{
personQueries.close(); // close database connection
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.addPerson( 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
// main method
public static void main( String args[] )
{
new AddressBookDisplay();
} // end method main
} // end class AddressBookDisplay
public class Person
{
private int addressID;
private String firstName;
private String lastName;
private String email;
private String phoneNumber;
// no-argument constructor
public Person()
{
} // end no-argument Person constructor
// constructor
public Person( int id, String first, String last,
String emailAddress, String phone )
{
setAddressID( id );
setFirstName( first );
setLastName( last );
setEmail( emailAddress );
setPhoneNumber( phone );
} // end five-argument Person constructor
// sets the addressID
public void setAddressID( int id )
{
addressID = id;
} // end method setAddressID
// returns the addressID
public int getAddressID()
{
return addressID;
} // end method getAddressID
// sets the firstName
public void setFirstName( String first )
{
firstName = first;
} // end method setFirstName
// returns the first name
public String getFirstName()
{
return firstName;
} // end method getFirstName
// sets the lastName
public void setLastName( String last )
{
lastName = last;
} // end method setLastName
// returns the last name
public String getLastName()
{
return lastName;
} // end method getLastName
// sets the email address
public void setEmail( String emailAddress )
{
email = emailAddress;
} // end method setEmail
// returns the email address
public String getEmail()
{
return email;
} // end method getEmail
// sets the phone number
public void setPhoneNumber( String phone )
{
phoneNumber = phone;
} // end method setPhoneNumber
// returns the phone number
public String getPhoneNumber()
{
return phoneNumber;
} // end method getPhoneNumber
} // end class Person
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement ;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.ArrayList;
public class PersonQueries
{
private static final String URL = "jdbc:derby:AddressBook";
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;
// constructor
public PersonQueries()
{
try
{
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 ( ?, ?, ?, ? )" );
} // end try
catch ( SQLException 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 void updatePerson( Person person )
throws Exception
{
String sql = "UPDATE persons SET firstName = ?, lastName = ?,email = ?, phoneNumber = ?, email = ? WHERE id = ?";
Object[] parameters = new Object[] {
person.getAddressID(), person.getFirstName(),
person.getLastName(), person.getEmail(),
person.getPhoneNumber()
};
}
// 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
AddressBookDisplay.java
Person.java
PersonQueries.java
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;
// 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();
setLayout( new FlowLayout( FlowLayout.CENTER, 10, 10 ) );
setSize( 400, 300 );
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 );
addWindowListener(
new WindowAdapter()
{
public void windowClosing( WindowEvent evt )
{
personQueries.close(); // close database connection
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.addPerson( firstNameTextField.getText
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
// main method
public static void main( String args[] )
{
new AddressBookDisplay();
} // end method main
} // end class AddressBookDisplay
public class Person
{
private int addressID;
private String firstName;
private String lastName;
private String email;
private String phoneNumber;
// no-argument constructor
public Person()
{
} // end no-argument Person constructor
// constructor
public Person( int id, String first, String last,
String emailAddress, String phone )
{
setAddressID( id );
setFirstName( first );
setLastName( last );
setEmail( emailAddress );
setPhoneNumber( phone );
} // end five-argument Person constructor
// sets the addressID
public void setAddressID( int id )
{
addressID = id;
} // end method setAddressID
// returns the addressID
public int getAddressID()
{
return addressID;
} // end method getAddressID
// sets the firstName
public void setFirstName( String first )
{
firstName = first;
} // end method setFirstName
// returns the first name
public String getFirstName()
{
return firstName;
} // end method getFirstName
// sets the lastName
public void setLastName( String last )
{
lastName = last;
} // end method setLastName
// returns the last name
public String getLastName()
{
return lastName;
} // end method getLastName
// sets the email address
public void setEmail( String emailAddress )
{
email = emailAddress;
} // end method setEmail
// returns the email address
public String getEmail()
{
return email;
} // end method getEmail
// sets the phone number
public void setPhoneNumber( String phone )
{
phoneNumber = phone;
} // end method setPhoneNumber
// returns the phone number
public String getPhoneNumber()
{
return phoneNumber;
} // end method getPhoneNumber
} // end class Person
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.ArrayList;
public class PersonQueries
{
private static final String URL = "jdbc:derby:AddressBook";
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;
// constructor
public PersonQueries()
{
try
{
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 ( ?, ?, ?, ? )" );
} // end try
catch ( SQLException 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 void updatePerson( Person person )
throws Exception
{
String sql = "UPDATE persons SET firstName = ?, lastName = ?,email = ?, phoneNumber = ?, email = ? WHERE id = ?";
Object[] parameters = new Object[] {
person.getAddressID(), person.getFirstName(),
person.getLastName(), person.getEmail(),
person.getPhoneNumber()
};
}
// 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
AddressBookDisplay.java
Person.java
PersonQueries.java
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I put up the derby. Can you execute the program now?
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
The derby is new to me. Can you help me with this as far as the connection to the database and can you explain what it is and what is used for?
ASKER
i have never installed a derby before now.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Can I get a little help the driver I have for the derby is
public String driver = "org.apache.derby.jdbc.Emb eddedDrive r";
It is not working can you help me set up the driver for program. I get a runtime error stating
Exception in thread "main" 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:34)
at AddressBookDisplay.<init>( AddressBoo kDisplay.j ava:66)
at AddressBookDisplay.main(Ad dressBookD isplay.jav a:391)
----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.
public String driver = "org.apache.derby.jdbc.Emb
It is not working can you help me set up the driver for program. I get a runtime error stating
Exception in thread "main" 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.
ASKER
I have fixed the error with the Derby and the connection. I have added a JButton in the AddressBookDisplay. It is not showing up when I run the program. Can someone help me with this problem. Also, I want to know if I called the update person properly in my AddressBookDisplay program. I am not getting the JButton called update to show up in my AddressBookDisplay.
ASKER
I really appreciated your help. Mr. Yan was very patient.
ASKER
derby.log