位置:首頁 > 數據庫 > PostgreSQL教學 > PostgreSQL連接JAVA接口

PostgreSQL連接JAVA接口

安裝

在我們開始之前,我們需要在Java程序中使用PostgreSQL,確保PostgreSQL的JDBC和Java已經在機器上安裝。可以檢查機器上是否安裝了Java。現在,讓我們檢查如何設置JDBC驅動。

  • 從PostgreSQL的JDBC庫下載最新版本的 postgresql-(VERSION).jdbc.jar

  • 添加下載的jar文件postgresql-(VERSION).jdbc.jar在類路徑中,可以使用它沿與-classpath選項,如下麵例子。

如果有關於Java JDBC概念了解不是很多,那麼建議花半小時學習JDBC教學

連接到數據庫

下麵的Java代碼顯示了如何連接到一個現有的數據庫。如果數據庫不存在,那麼它就會被創建,終於將返回一個數據庫對象。

import java.sql.Connection;
import java.sql.DriverManager;

public class PostgreSQLJDBC {
   public static void main(String args[]) {
      Connection c = null;
      try {
         Class.forName("org.postgresql.Driver");
         c = DriverManager
            .getConnection("jdbc:postgresql://localhost:5432/testdb",
            "postgres", "123");
      } catch (Exception e) {
         e.printStackTrace();
         System.err.println(e.getClass().getName()+": "+e.getMessage());
         System.exit(0);
      }
      System.out.println("Opened database successfully");
   }
}

在編譯和運行上麵的程序,找到pg_hba.conf文件在PostgreSQL安裝目錄中,並添加下麵一行:

# IPv4 local connections:
host    all         all         127.0.0.1/32          md5

可以start/restart Postgres的服務器的情況下,它冇有運行使用下麵的命令:

[root@host]# service postgresql restart
Stopping postgresql service:                               [  OK  ]
Starting postgresql service:                               [  OK  ]

現在讓我們來編譯和運行上麵的程序,以獲得testdb連接。在這裡,我們使用的是postgresas的用戶ID和密碼123來訪問數據庫。可以更改此數據庫配置和設置。我們也假設當前版本的JDBC驅動程序為postgresql-9.2-1002.jdbc3.jar,可在當前路徑訪問。

C:JavaPostgresIntegration>javac PostgreSQLJDBC.java
C:JavaPostgresIntegration>java -cp c:	oolspostgresql-9.2-1002.jdbc3.jar;C:JavaPostgresIntegration PostgreSQLJDBC
Open database successfully

創建表

下麵的Java程序將被用於先前打開的數據庫中創建一個表。確保這個表在目標數據庫中冇有創建過。

import java.sql.*;

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


public class PostgreSQLJDBC {
   public static void main( String args[] )
     {
       Connection c = null;
       Statement stmt = null;
       try {
         Class.forName("org.postgresql.Driver");
         c = DriverManager
            .getConnection("jdbc:postgresql://localhost:5432/testdb",
            "manisha", "123");
         System.out.println("Opened database successfully");

         stmt = c.createStatement();
         String sql = "CREATE TABLE COMPANY " +
                      "(ID INT PRIMARY KEY     NOT NULL," +
                      " NAME           TEXT    NOT NULL, " +
                      " AGE            INT     NOT NULL, " +
                      " ADDRESS        CHAR(50), " +
                      " SALARY         REAL)";
         stmt.executeUpdate(sql);
         stmt.close();
         c.close();
       } catch ( Exception e ) {
         System.err.println( e.getClass().getName()+": "+ e.getMessage() );
         System.exit(0);
       }
       System.out.println("Table created successfully");
     }
}

編譯和執行程序時,它會創建公司表testdb的數據庫中,並會顯示以下兩行:

Opened database successfully
Table created successfully

INSERT 操作

下麵的Java程序,顯示我們如何在上麵的例子中創建COMPANY 表中的記錄:

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

public class PostgreSQLJDBC {
   public static void main(String args[]) {
      Connection c = null;
      Statement stmt = null;
      try {
         Class.forName("org.postgresql.Driver");
         c = DriverManager
            .getConnection("jdbc:postgresql://localhost:5432/testdb",
            "manisha", "123");
         c.setAutoCommit(false);
         System.out.println("Opened database successfully");

         stmt = c.createStatement();
         String sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
               + "VALUES (1, 'Paul', 32, 'California', 20000.00 );";
         stmt.executeUpdate(sql);

         sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
               + "VALUES (2, 'Allen', 25, 'Texas', 15000.00 );";
         stmt.executeUpdate(sql);

         sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
               + "VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );";
         stmt.executeUpdate(sql);

         sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
               + "VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );";
         stmt.executeUpdate(sql);

         stmt.close();
         c.commit();
         c.close();
      } catch (Exception e) {
         System.err.println( e.getClass().getName()+": "+ e.getMessage() );
         System.exit(0);
      }
      System.out.println("Records created successfully");
   }
}

當程序編譯和執行,它會創建COMPANY表中的記錄,並顯示以下兩行:

Opened database successfully
Records created successfully