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?

Do you really think anyone here will read your entire code ? Before posting your problem here , do some background work from your side. It will help you to learn and understand the subject.

Search for the exact part of the code where button code is written and you'll know why the button is not working.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.