How to Display Data from Database in JTable Java Example

Display Data from Database in JTable

In this tutorial, I have written Simple Java Program about, How to Display Data from Database in JTable. The Program were tested with MySQL database and all details were shared in the post.

Environment Details

  • JDK 1.7
  • MySQL Database
  • Eclipse IDE

Table Query

CREATE TABLE employee_details (empId INT, empName VARCHAR(30), empAge INT, empQualification VARCHAR(30), empAddress VARCHAR(50), PRIMARY KEY(empId));

Display Data from Database in JTable

Display Data from Database in JTable

Project Structure

Display Data from Database in JTable

Right Click on Project -> Go to Properties -> Go to Java Build Path -> Press Add Jars Button -> Select the Jar file from Project Lib Folder -> Click Ok

package com.dineshkrish.swing;

import java.awt.BorderLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;

 * @author Dinesh Krishnan

public class EmployeeDetails {
	private boolean status;

	public EmployeeDetails(String title) {

		// Creating Window using JFrame
		JFrame frame = new JFrame();
		frame.setSize(800, 500);

		// Adding Table View


	private JPanel getTablePanel() {

		JPanel tableJPanel = new JPanel();
		tableJPanel.setLayout(new BorderLayout());
		// Column Header
		String[] columns = {

		"Ëmployee ID", "Employee Name", "Employee Age",
				"Employee Qualification", "Employee Address" };

		// Getting Data for Table from Database
		Object[][] data = getEmployeeDetails();

		// Creating JTable object passing data and header
		JTable employeeTable = new JTable(data, columns);
		tableJPanel.add(employeeTable.getTableHeader(), BorderLayout.NORTH);
		tableJPanel.add(employeeTable, BorderLayout.CENTER);
		return tableJPanel;

	private Object[][] getEmployeeDetails() {

		Object[][] data = null;

		final String DRIVER_NAME = "com.mysql.jdbc.Driver";
		final String CONNECTION_URL = "jdbc:mysql://localhost:3306/ems";
		final String USERNAME = "root";
		final String PASSWORD = "";

		final String QUERY = "Select empId, empName, empAge, empQualification, empAddress from employee_details";

		try {

			// Loading the Driver

			// Getting Database Connection Object by Passing URL, Username and Password
			Connection connection = DriverManager.getConnection(CONNECTION_URL, USERNAME, PASSWORD);

			Statement statement = connection.createStatement();

			ResultSet rs = statement.executeQuery(QUERY);

			int rowCount = getRowCount(rs); // Row Count
			int columnCount = getColumnCount(rs); // Column Count

			data = new Object[rowCount][columnCount];

			// Starting from First Row for Iteration

			int i = 0;
			while ( {

				int j = 0;

				data[i][j++] = rs.getInt("empId");
				data[i][j++] = rs.getString("empName");
				data[i][j++] = rs.getInt("empAge");
				data[i][j++] = rs.getString("empQualification");
				data[i][j++] = rs.getString("empAddress");


			status = true;
			// Closing the Resources;
		} catch (Exception e) {


		return data;

	// Method to get Row Count from ResultSet Object
	private int getRowCount(ResultSet rs) {

		try {
			if(rs != null) {
				return rs.getRow(); 
		} catch (SQLException e) {

		return 0;

	// Method to get Column Count from ResultSet Object
	private int getColumnCount(ResultSet rs) {

		try {

			if(rs != null)
				return rs.getMetaData().getColumnCount();

		} catch (SQLException e) {


		return 0;

	public String toString() {
		return (status) ? "Data Listed Successfully" : "Application Error Occured";
	public static void main(String[] args) {

		String title = "Employee Details Table";

		EmployeeDetails employeeDetails = new EmployeeDetails(title);



Data Listed Successfully

Display Data from Database in JTable


1. Java SQL Documentation
2. Java Swing API Documentation