Hi! I'm a 2nd Year IT Student and right now I have a problem in creating an Address Book Program using Java Codes.. It has never been discussed to us in class so i really don't know how to do it but look for it online.. I have used Mr./Ms. (i don't know if he/she is a boy/girl) codes.. But when i run the program, i can use the save button.. but when i click the search button, it will not search for the name..and the buttons delete, update, search and clear won't work.. here are the codes.. you have to write the 3 class for it to run..
AddressBookDemo.java
/*
Name: Hemanth. B
Website: java-swing-tutorial.html
Topic: A basic Java Address Book
Conventions Used in Source code
---------------------------------
1. All JLabel components start with jlb*
2. All JPanel components start with jpl*
3. All JMenu components start with jmenu*
4. All JMenuItem components start with jmenuItem*
5. All JDialog components start with jdlg*
6. All JButton components start with jbn*
*/
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class AddressBookDemo implements ActionListener
{
ArrayList personsList;
PersonDao pDao;
JFrame appFrame;
JLabel jlbName, jlbAddress, jlbPhone, jlbEmail;
JTextField jtfName, jtfAddress, jtfPhone, jtfEmail;
JButton jbbSave, jbnDelete, jbnClear, jbnUpdate, jbnSearch,
jbnForward, jbnBack, jbnExit;
String name, address, email;
int phone;
int recordNumber; // used to naviagate using >> and << buttons
Container cPane;
public static void main(String args[]){
new AddressBookDemo();
}
public AddressBookDemo()
{
name = "";
address = "";
email = "";
phone = -1 ; //Stores 0 to indicate no Phone Number
recordNumber = -1;
createGUI();
personsList = new ArrayList();
// creating PersonDao object
pDao = new PersonDao();
}
public void createGUI(){
/*Create a frame, get its contentpane and set layout*/
appFrame = new JFrame("Address Book");
cPane = appFrame.getContentPane();
cPane.setLayout(new GridBagLayout());
//Arrange components on contentPane and set Action Listeners to each JButton
arrangeComponents();
appFrame.setSize(240,300);
appFrame.setResizable(false);
appFrame.setVisible(true);
}
public void arrangeComponents(){
jlbName = new JLabel("Name");
jlbAddress = new JLabel("Address");
jlbPhone = new JLabel("Phone");
jlbEmail = new JLabel("Email");
jtfName = new JTextField(20);
jtfAddress = new JTextField(20);
jtfPhone = new JTextField(20);
jtfEmail = new JTextField(20);
jbbSave = new JButton("Save");
jbnDelete = new JButton("Delete");
jbnClear = new JButton("Clear");
jbnUpdate = new JButton("Update");
jbnSearch = new JButton("Search");
jbnForward = new JButton(">>");
jbnBack = new JButton("<<");
jbnExit = new JButton("Exit");
/*add all initialized components to the container*/
GridBagConstraints gridBagConstraintsx01 = new GridBagConstraints();
gridBagConstraintsx01.gridx = 0;
gridBagConstraintsx01.gridy = 0;
gridBagConstraintsx01.insets = new Insets(5,5,5,5);
cPane.add(jlbName, gridBagConstraintsx01);
GridBagConstraints gridBagConstraintsx02 = new GridBagConstraints();
gridBagConstraintsx02.gridx = 1;
gridBagConstraintsx02.insets = new Insets(5,5,5,5);
gridBagConstraintsx02.gridy = 0;
gridBagConstraintsx02.gridwidth = 2;
gridBagConstraintsx02.fill = GridBagConstraints.BOTH;
cPane.add(jtfName, gridBagConstraintsx02);
GridBagConstraints gridBagConstraintsx03 = new GridBagConstraints();
gridBagConstraintsx03.gridx = 0;
gridBagConstraintsx03.insets = new Insets(5,5,5,5);
gridBagConstraintsx03.gridy = 1;
cPane.add(jlbAddress, gridBagConstraintsx03);
GridBagConstraints gridBagConstraintsx04 = new GridBagConstraints();
gridBagConstraintsx04.gridx = 1;
gridBagConstraintsx04.insets = new Insets(5,5,5,5);
gridBagConstraintsx04.gridy = 1;
gridBagConstraintsx04.gridwidth = 2;
gridBagConstraintsx04.fill = GridBagConstraints.BOTH;
cPane.add(jtfAddress, gridBagConstraintsx04);
GridBagConstraints gridBagConstraintsx05 = new GridBagConstraints();
gridBagConstraintsx05.gridx = 0;
gridBagConstraintsx05.insets = new Insets(5,5,5,5);
gridBagConstraintsx05.gridy = 2;
cPane.add(jlbPhone, gridBagConstraintsx05);
GridBagConstraints gridBagConstraintsx06 = new GridBagConstraints();
gridBagConstraintsx06.gridx = 1;
gridBagConstraintsx06.gridy = 2;
gridBagConstraintsx06.insets = new Insets(5,5,5,5);
gridBagConstraintsx06.gridwidth = 2;
gridBagConstraintsx06.fill = GridBagConstraints.BOTH;
cPane.add(jtfPhone, gridBagConstraintsx06);
GridBagConstraints gridBagConstraintsx07 = new GridBagConstraints();
gridBagConstraintsx07.gridx = 0;
gridBagConstraintsx07.insets = new Insets(5,5,5,5);
gridBagConstraintsx07.gridy = 3;
cPane.add(jlbEmail, gridBagConstraintsx07);
GridBagConstraints gridBagConstraintsx08 = new GridBagConstraints();
gridBagConstraintsx08.gridx = 1;
gridBagConstraintsx08.gridy = 3;
gridBagConstraintsx08.gridwidth = 2;
gridBagConstraintsx08.insets = new Insets(5,5,5,5);
gridBagConstraintsx08.fill = GridBagConstraints.BOTH;
cPane.add(jtfEmail, gridBagConstraintsx08);
GridBagConstraints gridBagConstraintsx09 = new GridBagConstraints();
gridBagConstraintsx09.gridx = 0;
gridBagConstraintsx09.gridy = 4;
gridBagConstraintsx09.insets = new Insets(5,5,5,5);
cPane.add(jbbSave, gridBagConstraintsx09);
GridBagConstraints gridBagConstraintsx10 = new GridBagConstraints();
gridBagConstraintsx10.gridx = 1;
gridBagConstraintsx10.gridy = 4;
gridBagConstraintsx10.insets = new Insets(5,5,5,5);
cPane.add(jbnDelete, gridBagConstraintsx10);
GridBagConstraints gridBagConstraintsx11 = new GridBagConstraints();
gridBagConstraintsx11.gridx = 2;
gridBagConstraintsx11.gridy = 4;
gridBagConstraintsx11.insets = new Insets(5,5,5,5);
cPane.add(jbnUpdate, gridBagConstraintsx11);
GridBagConstraints gridBagConstraintsx12 = new GridBagConstraints();
gridBagConstraintsx12.gridx = 0;
gridBagConstraintsx12.gridy = 5;
gridBagConstraintsx12.insets = new Insets(5,5,5,5);
cPane.add(jbnBack, gridBagConstraintsx12);
GridBagConstraints gridBagConstraintsx13 = new GridBagConstraints();
gridBagConstraintsx13.gridx = 1;
gridBagConstraintsx13.gridy = 5;
gridBagConstraintsx13.insets = new Insets(5,5,5,5);
cPane.add(jbnSearch, gridBagConstraintsx13);
GridBagConstraints gridBagConstraintsx14 = new GridBagConstraints();
gridBagConstraintsx14.gridx = 2;
gridBagConstraintsx14.gridy = 5;
gridBagConstraintsx14.insets = new Insets(5,5,5,5);
cPane.add(jbnForward, gridBagConstraintsx14);
GridBagConstraints gridBagConstraintsx15 = new GridBagConstraints();
gridBagConstraintsx15.gridx = 1;
gridBagConstraintsx15.insets = new Insets(5,5,5,5);
gridBagConstraintsx15.gridy = 6;
cPane.add(jbnClear, gridBagConstraintsx15);
GridBagConstraints gridBagConstraintsx16 = new GridBagConstraints();
gridBagConstraintsx16.gridx = 2;
gridBagConstraintsx16.gridy = 6;
gridBagConstraintsx16.insets = new Insets(5,5,5,5);
cPane.add(jbnExit, gridBagConstraintsx16);
jbbSave.addActionListener(this);
jbnDelete.addActionListener(this);
jbnClear.addActionListener(this);
jbnUpdate.addActionListener(this);
jbnSearch.addActionListener(this);
jbnForward.addActionListener(this);
jbnBack.addActionListener(this);
jbnExit.addActionListener(this);
}
public void actionPerformed (ActionEvent e){
if (e.getSource () == jbbSave){
savePerson();
clear();
}
else if (e.getSource() == jbnDelete){
deletePerson();
clear();
}
else if (e.getSource() == jbnUpdate){
updatePerson();
clear();
}
else if (e.getSource() == jbnSearch){
searchPerson();
}
else if (e.getSource() == jbnForward){
displayNextRecord();
}
else if (e.getSource() == jbnBack){
displayPreviousRecord();
}
else if (e.getSource() == jbnClear){
clear();
}
else if (e.getSource() == jbnExit){
System.exit(0);
}
}
// Save the Person into the Address Book
public void savePerson(){
name = jtfName.getText();
name = name.toUpperCase(); //Save all names in Uppercase
address = jtfAddress.getText();
try{
phone = Integer.parseInt(""+jtfPhone.getText());
}catch(Exception e){
/*System.out.print("Input is a string");
JOptionPane.showMessageDialog(null, "Please enter Phone Number");*/
}
email = jtfEmail.getText();
if(name.equals("")){
JOptionPane.showMessageDialog(null, "Please enter person name.");
}else{
//create a PersonInfo object and pass it to PersonDao to save it
PersonInfo person = new PersonInfo(name, address, phone, email);
pDAO.savePerson(person);
JOptionPane.showMessageDialog(null, "Person Saved");
}
}
public void deletePerson(){
name = jtfName.getText();
name = name.toUpperCase();
if(name.equals("")){
JOptionPane.showMessageDialog(null,"Please enter person name to delete.");
}
else{
//remove Person of the given name from the Address Book database
int numberOfDeleted = pDAO.removePerson(name);
JOptionPane.showMessageDialog(null, numberOfDeleted + " Record(s) deleted.");
}
}
public void updatePerson(){
if (recordNumber >= 0 && recordNumber < personsList.size())
{
PersonInfo person = (PersonInfo)personsList.get(recordNumber);
int id = person.getId();
/*get values from text fields*/
name = jtfName.getText();
address = jtfAddress.getText();
phone = Integer.parseInt(jtfPhone.getText());
email = jtfEmail.getText();
/*update data of the given person name*/
person = new PersonInfo(id, name, address, phone, email);
pDAO.updatePerson(person);
JOptionPane.showMessageDialog(null, "Person info record updated successfully.");
}
else
{
JOptionPane.showMessageDialog(null, "No record to Update");
}
}
//Perform a Case-Insensitive Search to find the Person
public void searchPerson() {
name = jtfName.getText();
name = name.toUpperCase();
/*clear contents of arraylist if there are any from previous search*/
personsList.clear();
recordNumber = 0;
if(name.equals("")){
JOptionPane.showMessageDialog(null,"Please enter person name to search.");
}
else{
/*get an array list of searched persons using PersonDAO*/
personsList = pDao.searchPerson(name);
if(personsList.size() == 0){
JOptionPane.showMessageDialog(null, "No records found.");
//Perform a clear if no records are found.
clear();
}
else
{
/*downcast the object from array list to PersonInfo*/
PersonInfo person = (PersonInfo) personsList.get(recordNumber);
// displaying search record in text fields
jtfName.setText(person.getName());
jtfAddress.setText(person.getAddress());
jtfPhone.setText(""+person.getPhone());
jtfEmail.setText(person.getEmail());
}
}
}
public void displayNextRecord(){
// inc in recordNumber to display next person info, already stored in
// personsList during search
recordNumber++;
if(recordNumber >= personsList.size()){
JOptionPane.showMessageDialog(null, "You have reached end of " +
"search results");
/*if user has reached the end of results, disable forward button*/
jbnForward.setEnabled(false);
jbnBack.setEnabled(true);
// dec by one to counter last inc
recordNumber -- ;
}
else{
jbnBack.setEnabled(true);
PersonInfo person = (PersonInfo) personsList.get(recordNumber);
// displaying search record in text fields
jtfName.setText(person.getName());
jtfAddress.setText(person.getAddress());
jtfPhone.setText(""+person.getPhone());
jtfEmail.setText(person.getEmail());
}
}
public void displayPreviousRecord(){
// dec in recordNumber to display previous person info, already
//stored in personsList during search
recordNumber--;
if(recordNumber < 0 ){
JOptionPane.showMessageDialog(null, "You have reached begining " +
"of search results");
/*if user has reached the begining of results, disable back button*/
jbnForward.setEnabled(true);
jbnBack.setEnabled(false);
// inc by one to counter last dec
recordNumber++;
}else{
jbnForward.setEnabled(true);
PersonInfo person = (PersonInfo) personsList.get(recordNumber);
// displaying search record in text fields
jtfName.setText(person.getName());
jtfAddress.setText(person.getAddress());
jtfPhone.setText(""+person.getPhone());
jtfEmail.setText(person.getEmail());
}
}
public void clear(){
jtfName.setText("");
jtfAddress.setText("");
jtfPhone.setText("");
jtfEmail.setText("");
/*clear contents of arraylist*/
recordNumber = -1;
personsList.clear();
jbnForward.setEnabled(true);
jbnBack.setEnabled(true);
}
}
And this one
PersonDao.java
/*
Name: Hemanth. B
Website: java-swing-tutorial.html
Topic: A basic Java Address Book
Conventions Used in Source code
---------------------------------
1. All JLabel components start with jlb*
2. All JPanel components start with jpl*
3. All JMenu components start with jmenu*
4. All JMenuItem components start with jmenuItem*
5. All JDialog components start with jdlg*
6. All JButton components start with jbn*
*/
import java.util.*;
import java.sql.*;
public class PersonDao{
/* Person Table needs to be created in the Oracle Database.
* create table Person (
id Integer,
name Varchar(30),
address Varchar(30),
phone Integer,
email Varchar(50)
);*/
private ArrayList personsList;
private String userid = "scott";
private String password = "tiger";
static String url = "jdbc:odbc:bob";
private Connection con;
// constructor
public PersonDao(){
personsList = new ArrayList();
getConnection(); //Create Connection to the Oracle Database
}
public Connection getConnection(){
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch(java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
}
try {
con = DriverManager.getConnection(url, userid, password);
} catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
}
return con;
}
public ArrayList searchPerson(String name)
{
try {
String sql = "SELECT * FROM Person WHERE name like '%"+name+"%'";
// Create a prepared statement
Statement s = con.createStatement();
ResultSet rs = s.executeQuery(sql);
String pname = "";
String address = "";
String email = "";
int id, phone;
while(rs.next())
{
id = rs.getInt("id");
pname = rs.getString("name");
address = rs.getString("address");
phone = rs.getInt("phone");
email = rs.getString("email");
//Create a PersonInfo object
PersonInfo person = new PersonInfo(id, pname, address, phone, email);
//Add the person object to array list
personsList.add(person);
}
}
catch(Exception e){
System.out.println(e);
}
return personsList;
}
public void savePerson(PersonInfo person){
try
{
String sql = "INSERT INTO Person(name, address, " +
"phone, email) VALUES (?,?,?,?) ";
// Create a Preparedstatement
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, person.getName());
ps.setString(2, person.getAddress());
ps.setInt(3, person.getPhone());
ps.setString(4, person.getEmail());
ps.executeUpdate();
}
catch(Exception e){
System.out.println(e);
}
}
public void updatePerson(PersonInfo person)
{
try
{
String sql = "UPDATE Person SET name = ?, address=? , " +
"phone=? , email=? where id=?";
// Create a Prepared statement
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1 , person.getName());
ps.setString(2 , person.getAddress());
ps.setInt(3 , person.getPhone());
ps.setString(4 , person.getEmail());
ps.setInt(5 , person.getId());
ps.executeUpdate();
}
catch(Exception e){
System.out.println(e);
}
}
public int removePerson(String name){
int no = 0;
try{
String sql = "DELETE FROM Person WHERE name = ?";
// Create a Prepared statement
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, name);
no = ps.executeUpdate();
}
catch(Exception e){
System.out.println(e);
}
return no;
}
}// end class PersonDao
and lastly,
PersonInfo.java
/*
Name: Hemanth. B
Website: java-swing-tutorial.html
Topic: A basic Java Address Book
Conventions Used in Source code
---------------------------------
1. All JLabel components start with jlb*
2. All JPanel components start with jpl*
3. All JMenu components start with jmenu*
4. All JMenuItem components start with jmenuItem*
5. All JDialog components start with jdlg*
6. All JButton components start with jbn*
*/
public class PersonInfo
{
private String name,address,email;
private int id, phone;
// default constructor
public PersonInfo()
{
name = "";
address = "";
email = "";
id = 0;
phone = 0;
}
// param constructor with 5 values
public PersonInfo(int id, String name, String address, int phone, String email)
{
this.id = id;
this.name = name;
this.address = address;
this.phone = phone;
this.email = email;
}
// param construcrtor with 4 values
public PersonInfo(String name, String address, int phone, String email)
{
this.name = name;
this.address = address;
this.phone = phone;
this.email = email;
}
// setters
public void setId(int i)
{
id = i;
}
public void setName(String n)
{
name=n;
}
public void setAddress(String a)
{
address=a;
}
public void setPhone(int ph)
{
phone=ph;
}
public void setEmail(String e)
{
email=e;
}
// getters
public int getId( )
{
return id;
}
public String getName()
{
return name;
}
public String getAddress()
{
return address;
}
public int getPhone()
{
return phone;
}
public String getEmail()
{
return email;
}
}
What is wrong with these codes? How can i create an sql?