在我們開始之前,我們需要在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
下面的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