Search Records From Database Using Swing GUI in Java

Introduction

This article explains how to search user records from a database by their name in the Swing GUI of Java. The NetBeans IDE is used to create the sample examples.

Searching Records from Database in a Windows Forms form using Swing GUI

For creating this app we need the following files:

  1. Java file (SwingSearchApp.java)
  2. SQL table (emp.sql)

1. SwingSearchApp.java

This Java file consists of the entire logic. First of all we initialize the JFrame components using a constructor then create a database connection and finally set the database value to the textfield. If the given name is not found in the database then it displays an error message and displays it by running the constructor.

2. emp.sql

For fetching records we need a database table; for that we create an "emp" table in our database.

Syntax

emp.sql

create table emp
 (
    uname varchar2(20), umail varchar2(30),
    upass varchar2(20), ucountry varchar2(20)
 );

Insert some rows

The following SQL will insert some rows in it:

1. insert into emp values ('sandeep', 'sandy05.1991@gmail.com', 'welcome', 'India');

2. insert into emp values ('rahul', 'rahul@gmail.com' , '123', 'India');

Now let's start creating this app. Use the following procedure to do that in the NetBeans IDE.

Step 1

Open the NetBeans IDE.

NetBeans

Step 2

Choose "Java" -> "Java application" as shown below.

Java Application

Step 3

Type your project name as "SwingSearchApp" as in the following.

SwingSearchApp

Step 4

Now write the following code in the "SwingSearchApp.java" file.

SwingSearchApp.java

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

import java.sql.*;

 

public class SwingSearchApp extends JFrame implements ActionListener {

 

//Initializing Components

    JLabel lb, lb1, lb2, lb3, lb4, lb5;

    JTextField tf1, tf2, tf3, tf4, tf5;

    JButton btn;

 

    //Creating Constructor for initializing JFrame components

    SwingSearchApp() {

        //Providing Title

        super("Fetching Student Information");

        lb5 = new JLabel("Enter Name:");

        lb5.setBounds(20, 20, 100, 20);

        tf5 = new JTextField(20);

        tf5.setBounds(130, 20, 200, 20);

 

        btn = new JButton("Submit");

        btn.setBounds(50, 50, 100, 20);

        btn.addActionListener(this);

 

        lb = new JLabel("Fetching Student Information From Database");

        lb.setBounds(30, 80, 450, 30);

        lb.setForeground(Color.red);

        lb.setFont(new Font("Serif", Font.BOLD, 20));

        setVisible(true);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setSize(500, 500);

 

        lb1 = new JLabel("U_Name:");

        lb1.setBounds(20, 120, 100, 20);

        tf1 = new JTextField(50);

        tf1.setBounds(130, 120, 200, 20);

        lb2 = new JLabel("U_Mail:");

        lb2.setBounds(20, 150, 100, 20);

        tf2 = new JTextField(100);

        tf2.setBounds(130, 150, 200, 20);

        lb3 = new JLabel("U_Pass:");

        lb3.setBounds(20, 180, 100, 20);

        tf3 = new JTextField(50);

        tf3.setBounds(130, 180, 200, 20);

        lb4 = new JLabel("U_Country:");

        lb4.setBounds(20, 210, 100, 20);

        tf4 = new JTextField(50);

        tf4.setBounds(130, 210, 100, 20);

        setLayout(null);

 

        //Add components to the JFrame

        add(lb5);

        add(tf5);

        add(btn);

 

        add(lb);

        add(lb1);

        add(tf1);

        add(lb2);

        add(tf2);

        add(lb3);

        add(tf3);

        add(lb4);

        add(tf4);

 

        //Set TextField Editable False

        tf1.setEditable(false);

        tf2.setEditable(false);

        tf3.setEditable(false);

        tf4.setEditable(false);

    }

 

    public void actionPerformed(ActionEvent e) {

        //Create DataBase Coonection and Fetching Records

 

        try {

            String str = tf5.getText();

 

            Class.forName("oracle.jdbc.driver.OracleDriver");

            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@mcndesktop07:1521", "sandeep", "welcome");

            PreparedStatement st = con.prepareStatement("select * from emp where uname=?");

            st.setString(1, str);

 

            //Excuting Query

            ResultSet rs = st.executeQuery();

 

            if (rs.next()) {

                String s = rs.getString(1);

                String s1 = rs.getString(2);

                String s2 = rs.getString(3);

                String s3 = rs.getString(4);

 

                //Sets Records in TextFields.

                tf1.setText(s);

                tf2.setText(s1);

                tf3.setText(s2);

                tf4.setText(s3);

            } else {

                JOptionPane.showMessageDialog(null, "Name not Found");

            }

 

            //Create Exception Handler

        } catch (Exception ex) {

 

            System.out.println(ex);

        }

    }

//Running Constructor

 

    public static void main(String args[]) {

        new SwingSearchApp();

    }

} 

Step 5

Now our project is ready to run. Right-click on the project menu then choose "Run". The following output is generated.

Output

Step 6

Now type the names of students to search for.

Case 1:

Enter an incorrect name as in the following and then click on "Submit".

Output

Showing error

Note:

JOptionPane.showMessageDialog(null, "Name not Found");

We use this dialogue box for generating an error message. So a new dialogue box appears with the message.

Case 2:

Searching records for "rahul".

Rahul provided in name part

rahul records

Case 3:

Searching records for "sandeep".

sandeep records