Creating User Account Information in Java - Searching Records to Database

This is a continuation of my last tutorials entitled Creating User Account Information in Java - Adding Records to Database. So, in this tutorial we will create a function button that provides searching of records in the access database. Now let's start this tutorial! :) 1. Create your database in ms access and named it sample.mdb with Login table and the following entities below. design design 2. Create your java program now named UserSettings.java. 3. Import the following packages.
  1.     import javax.swing.*;
  2.     import java.awt.*;
  3.     import java.awt.event.*;
  4.     import java.sql.*;
  5.     import java.lang.*;
4. Initialize the following variables add only the btnSearch Button in our last tutorial.
  1.         JLabel lblUser = new JLabel("Username ",JLabel.RIGHT); 
  2.         JLabel lblPass = new JLabel("Password ",JLabel.RIGHT);
  3.         JLabel lblName1 = new JLabel("First Name",JLabel.RIGHT);
  4.         JLabel lblName2 = new JLabel("Family Name",JLabel.RIGHT);
  5.        
  6.         JTextField txtUser = new JTextField(20);
  7.         JPasswordField txtPass= new JPasswordField(20);
  8.         JTextField txtName1= new JTextField(20);
  9.         JTextField txtName2= new JTextField(20);
  10.        
  11.         JButton btnNew = new JButton("Add");
  12.         JButton btnSearch = new JButton("Search");
  13.        
  14.         Connection cn;
  15.         Statement st;
  16.         PreparedStatement ps;
5. Create a constructor named UserSettings() same with your classname for creating the panels to put controls in the form as well as the connection in the database. This will add the btnSearch Button in the panel.
  1. public UserSettings() {
  2.                 super("User Account Settings");
  3.        
  4.                 JPanel pane = new JPanel();
  5.                 pane.setLayout(null);
  6.                
  7.                 lblUser.setBounds(5,50,80,25);
  8.                 pane.add(lblUser);
  9.                 txtUser.setBounds(90,50,150,25);
  10.                 pane.add(txtUser);
  11.                 lblUser.setForeground(Color.white);
  12.                
  13.                 lblPass.setBounds(5,85,80,25);
  14.                 pane.add(lblPass);
  15.                 txtPass.setBounds(90,85,150,25);
  16.                 txtPass.setEchoChar('*');
  17.                 pane.add(txtPass);
  18.                 lblPass.setForeground(Color.white);
  19.                
  20.                 lblName1.setBounds(5,120,80,25);
  21.                 pane.add(lblName1);
  22.                 txtName1.setBounds(90,120,150,25);
  23.                 pane.add(txtName1);
  24.                 lblName1.setForeground(Color.white);
  25.                
  26.                
  27.                 lblName2.setBounds(5,155,80,25);
  28.                 pane.add(lblName2);
  29.                 txtName2.setBounds(90,155,150,25);
  30.                 pane.add(txtName2);
  31.                 lblName2.setForeground(Color.white);
  32.                                                                
  33.                 btnNew.setBounds(5,190,75,35);
  34.                 pane.add(btnNew);
  35.                
  36.                 btnNew.addActionListener(this);
  37.                
  38.                 btnSearch.setBounds(230,190,75,35);
  39.                 pane.add(btnSearch);
  40.                
  41.                 btnSearch.addActionListener(this);
  42.                
  43.                
  44.                 pane.setBackground(Color.black);
  45.                
  46.        
  47.                 setContentPane(pane);
  48.                 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  49.                 pane.setBorder(BorderFactory.createTitledBorder(
  50.            BorderFactory.createEtchedBorder(), "Creating User Account"));
  51.                
  52.                 try{
  53.                         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  54.                         cn = DriverManager.getConnection("jdbc:odbc:User");
  55.                 }catch(ClassNotFoundException e)  {
  56.                         System.err.println("Failed to load driver");
  57.                         e.printStackTrace();
  58.                 }
  59.                 catch(SQLException e){
  60.                         System.err.println("Unable to connect");
  61.                         e.printStackTrace();
  62.                 }
  63.         }
7. Create your ActionEvent for clicking the button btnSearch. This will trigger to search the records in the database. If found, it will display the records in the textfields. Otherwise, it will prompt the user that the record is not found.
  1.         public void actionPerformed(ActionEvent e){
  2.                 Object source = e.getSource();
  3.                         if(source == btnSearch){               
  4.                                         try{
  5.                                                
  6.                                         String sUser ="";
  7.                                         int tmp= 0;
  8.                                         clear();
  9.                                         sUser = JOptionPane.showInputDialog(null,"Enter Username to search.","Payroll System: User settings",JOptionPane.QUESTION_MESSAGE);
  10.                                         st= cn.createStatement();      
  11.                                         ResultSet rs=st.executeQuery("SELECT * FROM Login WHERE username = '" + sUser + "'");
  12.                                                
  13.                                                 while(rs.next()){
  14.                                                         txtUser.setText(rs.getString(1));
  15.                                                         txtPass.setText(rs.getString(2));
  16.                                                         txtName1.setText(rs.getString(3));
  17.                                                         txtName2.setText(rs.getString(4));
  18.                                                         tmp=1;
  19.                                                         }
  20.                                                 st.close();
  21.                                                 if (tmp==0){
  22.                                                         JOptionPane.showMessageDialog(null,"No record found!!.","Payroll System: User settings",JOptionPane.INFORMATION_MESSAGE);      
  23.                                                 }
  24.                                                 }catch(SQLException s){
  25.                                         JOptionPane.showMessageDialog(null,"Unable to search!.","Payroll System: User settings",JOptionPane.ERROR_MESSAGE);
  26.                                         System.out.println("SQL Error" + s.toString() + " " + s.getErrorCode() + " " + s.getSQLState());
  27.                                         }
  28.                                 }      
  29.         }
The sql syntax here "ResultSet rs=st.executeQuery("SELECT * FROM Login WHERE username = '" + sUser + "'");" searches the record in the database and will display the records in the textfield with the following code:
  1. while(rs.next()){
  2.                                                         txtUser.setText(rs.getString(1));
  3.                                                         txtPass.setText(rs.getString(2));
  4.                                                         txtName1.setText(rs.getString(3));
  5.                                                         txtName2.setText(rs.getString(4));
  6. tmp=1;
  7.                                                         }
8. Create a method named clear to clear all your textfield.
  1.     public void clear(){       
  2.     txtUser.setText("");
  3.     txtPass.setText("");
  4.     txtName1.setText("");
  5.     txtName2.setText("");
  6.     }
9. Lastly create your Main. This will create the size and location of your form.
  1.     public static void main(String[]args){
  2.     UserSettings panel = new UserSettings();
  3.     panel.setSize(370,350);
  4.     panel.setVisible(true);
  5.     panel.setLocation(350,200);
  6.     panel.setResizable(false);
  7.     }
Output: output output output Here's the full code of this tutorial:
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import java.sql.*;
  5. import java.lang.*;
  6.  
  7.  public class UserSettings extends JFrame implements ActionListener{
  8.        
  9.         JLabel lblUser = new JLabel("Username ",JLabel.RIGHT); 
  10.         JLabel lblPass = new JLabel("Password ",JLabel.RIGHT);
  11.         JLabel lblName1 = new JLabel("First Name",JLabel.RIGHT);
  12.         JLabel lblName2 = new JLabel("Family Name",JLabel.RIGHT);
  13.        
  14.         JTextField txtUser = new JTextField(20);
  15.         JPasswordField txtPass= new JPasswordField(20);
  16.         JTextField txtName1= new JTextField(20);
  17.         JTextField txtName2= new JTextField(20);
  18.        
  19.         JButton btnNew = new JButton("Add");
  20.         JButton btnSearch = new JButton("Search");
  21.        
  22.         Connection cn;
  23.         Statement st;
  24.         PreparedStatement ps;
  25.        
  26.        
  27.                 public void clear(){   
  28.                 txtUser.setText("");
  29.                 txtPass.setText("");
  30.                 txtName1.setText("");
  31.                 txtName2.setText("");
  32.         }
  33.         public UserSettings() {
  34.                 super("User Account Settings");
  35.        
  36.                 JPanel pane = new JPanel();
  37.                 pane.setLayout(null);
  38.                
  39.                 lblUser.setBounds(5,50,80,25);
  40.                 pane.add(lblUser);
  41.                 txtUser.setBounds(90,50,150,25);
  42.                 pane.add(txtUser);
  43.                 lblUser.setForeground(Color.white);
  44.                
  45.                 lblPass.setBounds(5,85,80,25);
  46.                 pane.add(lblPass);
  47.                 txtPass.setBounds(90,85,150,25);
  48.                 txtPass.setEchoChar('*');
  49.                 pane.add(txtPass);
  50.                 lblPass.setForeground(Color.white);
  51.                
  52.                 lblName1.setBounds(5,120,80,25);
  53.                 pane.add(lblName1);
  54.                 txtName1.setBounds(90,120,150,25);
  55.                 pane.add(txtName1);
  56.                 lblName1.setForeground(Color.white);
  57.                
  58.                
  59.                 lblName2.setBounds(5,155,80,25);
  60.                 pane.add(lblName2);
  61.                 txtName2.setBounds(90,155,150,25);
  62.                 pane.add(txtName2);
  63.                 lblName2.setForeground(Color.white);
  64.                                                                
  65.                 btnNew.setBounds(5,190,75,35);
  66.                 pane.add(btnNew);
  67.                
  68.                 btnNew.addActionListener(this);
  69.                
  70.                 btnSearch.setBounds(230,190,75,35);
  71.                 pane.add(btnSearch);
  72.                
  73.                 btnSearch.addActionListener(this);
  74.                
  75.                
  76.                 pane.setBackground(Color.black);
  77.                
  78.        
  79.                 setContentPane(pane);
  80.                 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  81.                 pane.setBorder(BorderFactory.createTitledBorder(
  82.            BorderFactory.createEtchedBorder(), "Creating User Account"));
  83.                
  84.                 try{
  85.                         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  86.                         cn = DriverManager.getConnection("jdbc:odbc:User");
  87.                 }catch(ClassNotFoundException e)  {
  88.                         System.err.println("Failed to load driver");
  89.                         e.printStackTrace();
  90.                 }
  91.                 catch(SQLException e){
  92.                         System.err.println("Unable to connect");
  93.                         e.printStackTrace();
  94.                 }
  95.         }
  96.  
  97.         public void actionPerformed(ActionEvent e){
  98.                 Object source = e.getSource();
  99.  
  100.                         if(source == btnSearch){               
  101.                                         try{
  102.                                                
  103.                                         String sUser ="";
  104.                                         int tmp= 0;
  105.                                         clear();
  106.                                         sUser = JOptionPane.showInputDialog(null,"Enter Username to search.","Payroll System: User settings",JOptionPane.QUESTION_MESSAGE);
  107.                                         st= cn.createStatement();      
  108.                                         ResultSet rs=st.executeQuery("SELECT * FROM Login WHERE username = '" + sUser + "'");
  109.                                                
  110.                                                 while(rs.next()){
  111.                                                         txtUser.setText(rs.getString(1));
  112.                                                         txtPass.setText(rs.getString(2));
  113.                                                         txtName1.setText(rs.getString(3));
  114.                                                         txtName2.setText(rs.getString(4));
  115.                                                         tmp=1;
  116.                                                         }
  117.                                                 st.close();
  118.                                                 if (tmp==0){
  119.                                                         JOptionPane.showMessageDialog(null,"No record found!!.","Payroll System: User settings",JOptionPane.INFORMATION_MESSAGE);      
  120.                                                 }
  121.                                                 }catch(SQLException s){
  122.                                         JOptionPane.showMessageDialog(null,"Unable to search!.","Payroll System: User settings",JOptionPane.ERROR_MESSAGE);
  123.                                         System.out.println("SQL Error" + s.toString() + " " + s.getErrorCode() + " " + s.getSQLState());
  124.                                         }
  125.                                 }      
  126.         }
  127.  //     public void frameUser(){
  128.         public  static void main(String[]args){
  129.                 UserSettings panel = new UserSettings();
  130.                 panel.setSize(370,350);
  131.                 panel.setVisible(true);
  132.                 panel.setLocation(350,200);
  133.                 panel.setResizable(false);
  134.                 }
  135.  }
Best Regards,

Engr. Lyndon R. Bermoy
IT Instructor/System Developer/Android Developer
Mobile: 09079373999
Telephone: 826-9296
E-mail:[email protected]

Visit and like my page on Facebook at: Bermz ISware Solutions

Subscribe at my YouTube Channel at: SerBermz

Add new comment