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