Java JDBC PostgreSQL Create Table Example

In this tutorial, we will show you how to connect to a PostgreSQL database using a Java program and create a table. We will guide you step-by-step from downloading the PostgreSQL JDBC driver to writing the Java code that creates a table in the database.

What You’ll Learn:

  • Downloading the PostgreSQL JDBC driver.
  • Setting up a PostgreSQL database.
  • Writing Java code to create a table using JDBC.
  • Handling SQL exceptions.

Technologies Used:

In this tutorial, we will be using the following technologies:

  • JDK: Version 21 (or later)
  • PostgreSQL JDBC Driver: Version 42.7.4
  • IDE: Eclipse or any other preferred IDE (e.g., IntelliJ IDEA)
  • JDBC Version: 4.2

Step 1: PostgreSQL JDBC Driver Dependency

To connect your Java program to a PostgreSQL database, you need to add the PostgreSQL JDBC driver to your project. You can either download it manually or use a build tool like Maven or Gradle.

For Maven users:

Add the following dependency in your pom.xml file:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.7.4</version>
</dependency>

For Gradle users:

Add the following line in your build.gradle file:

implementation 'org.postgresql:postgresql:42.7.4'

This will automatically download and add the PostgreSQL JDBC driver to your project.


Step 2: PostgreSQL Database Setup

Before creating a table in PostgreSQL, ensure that PostgreSQL is installed on your system.

To set up a PostgreSQL database:

  1. Install PostgreSQL (if it’s not already installed).
  2. Open pgAdmin or any PostgreSQL client tool.
  3. Create a new database using the following SQL command:
CREATE DATABASE mydb;

This command creates a new database named mydb that we will use in the Java program to create a table.


Step 3: Writing Java Code to Create a Table

Now, we will write a Java program that connects to the PostgreSQL database and creates a table. We will use JDBC and DriverManager to establish the connection.

Java Program: Creating a Table in PostgreSQL

package com.example.postgresql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class CreateTableExample {

    // JDBC URL, username, and password of PostgreSQL server
    private final String url = "jdbc:postgresql://localhost/mydb";
    private final String user = "postgres";
    private final String password = "root";

    // SQL statement to create the "users" table
    private static final String createTableSQL = "CREATE TABLE users " +
        "(ID INT PRIMARY KEY, " +
        " NAME TEXT, " +
        " EMAIL VARCHAR(50), " +
        " COUNTRY VARCHAR(50), " +
        " PASSWORD VARCHAR(50))";

    public static void main(String[] args) {
        CreateTableExample example = new CreateTableExample();
        try {
            example.createTable();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    // Method to create the "users" table
    public void createTable() throws SQLException {
        // Step 1: Establishing a connection
        try (Connection connection = DriverManager.getConnection(url, user, password);

             // Step 2: Creating a statement
             Statement statement = connection.createStatement()) {

            // Step 3: Executing the SQL query
            statement.execute(createTableSQL);
            System.out.println("Table 'users' created successfully.");

        } catch (SQLException e) {
            printSQLException(e);
        }
    }

    // Method to print detailed SQL exceptions
    public static void printSQLException(SQLException ex) {
        for (Throwable e: ex) {
            if (e instanceof SQLException) {
                System.err.println("SQLState: " + ((SQLException) e).getSQLState());
                System.err.println("Error Code: " + ((SQLException) e).getErrorCode());
                System.err.println("Message: " + e.getMessage());
                Throwable t = ex.getCause();
                while (t != null) {
                    System.out.println("Cause: " + t);
                    t = t.getCause();
                }
            }
        }
    }
}

Explanation:

  • URL: The JDBC URL jdbc:postgresql://localhost/mydb connects to the mydb database on the PostgreSQL server.
  • Statement.execute(): This method executes the SQL statement that creates the users table.
  • printSQLException(): This method provides detailed error messages if any issues occur during SQL execution.

Step 4: Testing the Table Creation

To test the Java program:

  1. Run the main() method in your IDE.
  2. If everything works correctly, the program will create a table named users in the mydb database and print the following message:
Table 'users' created successfully.

The program will print detailed error messages if there’s an error, such as a connection issue or SQL syntax error.


Conclusion

In this tutorial, we showed you how to:

  • Download and add the PostgreSQL JDBC driver to your project.
  • Set up a PostgreSQL database.
  • Write a Java program to create a table in PostgreSQL using JDBC.
  • Handle SQL exceptions with detailed error messages.

This is a foundational step for working with PostgreSQL databases in Java. You can now build more complex applications that interact with PostgreSQL databases by creating, reading, updating, and deleting data in your tables.

Comments