Introduction

This article explains how to set up a database connection with a Swing GUI in Java. The NetBeans IDE is used to create the sample examples.

Fetching Records from Database using Swing GUI

For creating this app we need the following files:

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

1. SwingDatabaseApp.java

This Java consists of the entire logic. First of all we initialize JFrame components using a constructor then create a database connection and finally set the database value to the textfield and display it using a 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', '[email protected]', 'welcome', 'India');

2. insert into emp values ('rahul', '[email protected]' , '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 IDE

Step 2

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

Java Application

Step 3

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

Java Application

Step 4

Now provide the following code in the "SwingDatabaseApp.java" file.

SwingDatabaseApp.java

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

import java.sql.*;

public class SwingDatabaseApp extends JFrame {

//Initializing Components

JLabel lb, lb1, lb2, lb3, lb4;

JTextField tf1, tf2, tf3, tf4;

//Creating Constructor for initializing JFrame components

SwingDatabaseApp() {

//Providing Title

super("Fetching Student Information");

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

lb.setBounds(20, 50, 450, 20);

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(50, 105, 100, 20);

tf1 = new JTextField(50);

tf1.setBounds(160, 105, 100, 20);

lb2 = new JLabel("U_Mail:");

lb2.setBounds(50, 135, 100, 20);

tf2 = new JTextField(100);

tf2.setBounds(160, 135, 200, 20);

lb3 = new JLabel("U_Pass:");

lb3.setBounds(50, 165, 100, 20);

tf3 = new JTextField(50);

tf3.setBounds(160, 165, 100, 20);

lb4 = new JLabel("U_Country:");

lb4.setBounds(50, 200, 100, 20);

tf4 = new JTextField(50);

tf4.setBounds(160, 200, 100, 20);

setLayout(null);

//Add components to the JFrame

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);

//Create DataBase Coonection and Fetching Records for uname='sandeep'

try {

String str = "sandeep";

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();

while (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);

}

} //Create Exception Handler

catch (Exception ex) {

System.out.println(ex);

}

}

//Running Constructor

public static void main(String args[]) {

new SwingDatabaseApp();

}

}

Step 5

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

Saandeep Records

Step 6

Now change the uname and this time we are fetching records for "rahul".

String str = "rahul";

Fetching Rahul Records