PostgreSQL连接JAVA接口

本文详细介绍了在Java程序中使用PostgreSQL数据库的方法,包括安装JDBC驱动、连接数据库、创建表以及执行插入操作。通过示例代码演示了如何在Java中与PostgreSQL数据库进行交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装

在我们开始之前,我们需要在Java程序中使用PostgreSQL,确保PostgreSQL的JDBC和Java已经在机器上安装。可以检查机器上是否安装了Java。现在,让我们检查如何设置JDBC驱动。

 
  • 从PostgreSQL的JDBC库下载最新版本的 postgresql-(VERSION).jdbc.jar

  • 添加下载的jar文件postgresql-(VERSION).jdbc.jar在类路径中,可以使用它沿与-classpath选项,如下面例子

如果有关于Java JDBC概念了解不是很多,那么建议花半小时学习JDBC教程。

连接到数据库

下面的Java代码显示了如何连接到一个现有的数据库。如果数据库不存在,那么它就会被创建,终于将返回一个数据库对象。

 
  1. import java.sql.Connection; 
  2. import java.sql.DriverManager; 
  3.  
  4. public class PostgreSQLJDBC { 
  5.    public static void main(String args[]) { 
  6.       Connection c = null
  7.       try { 
  8.          Class.forName("org.postgresql.Driver"); 
  9.          c = DriverManager 
  10.             .getConnection("jdbc:postgresql://localhost:5432/testdb"
  11.             "postgres""123"); 
  12.       } catch (Exception e) { 
  13.          e.printStackTrace(); 
  14.          System.err.println(e.getClass().getName()+": "+e.getMessage()); 
  15.          System.exit(0); 
  16.       } 
  17.       System.out.println("Opened database successfully"); 
  18.    } 

在编译和运行上面的程序,找到pg_hba.conf文件在PostgreSQL安装目录中,并添加下面一行:

 
  1. # IPv4 local connections: 
  2. host    all         all         127.0.0.1/32          md5 

可以start/restart Postgres的服务器的情况下,它没有运行使用下面的命令:

 
  1. [root@host]# service postgresql restart 
  2. Stopping postgresql service:                               [  OK  ] 
  3. Starting postgresql service:                               [  OK  ] 

现在让我们来编译和运行上面的程序,以获得testdb连接。在这里,我们使用的是 postgresas的用户ID和密码123来访问数据库。可以更改此数据库配置和设置。我们也假设当前版本的JDBC驱动程序为postgresql- 9.2-1002.jdbc3.jar,可在当前路径访问。

 
  1. C:\JavaPostgresIntegration>javac PostgreSQLJDBC.java 
  2. C:\JavaPostgresIntegration>java -cp c:\tools\postgresql-9.2-1002.jdbc3.jar;C:\JavaPostgresIntegration PostgreSQLJDBC 
  3. Open database successfully 

创建表

下面的Java程序将被用于先前打开的数据库中创建一个表。确保这个表在目标数据库中没有创建过。

 
  1. import java.sql.*; 
  2.  
  3. import java.sql.Connection; 
  4. import java.sql.DriverManager; 
  5. import java.sql.Statement; 
  6.  
  7.  
  8. public class PostgreSQLJDBC { 
  9.    public static void main( String args[] ) 
  10.      { 
  11.        Connection c = null
  12.        Statement stmt = null
  13.        try { 
  14.          Class.forName("org.postgresql.Driver"); 
  15.          c = DriverManager 
  16.             .getConnection("jdbc:postgresql://localhost:5432/testdb"
  17.             "manisha""123"); 
  18.          System.out.println("Opened database successfully"); 
  19.  
  20.          stmt = c.createStatement(); 
  21.          String sql = "CREATE TABLE COMPANY " + 
  22.                       "(ID INT PRIMARY KEY     NOT NULL," + 
  23.                       " NAME           TEXT    NOT NULL, " + 
  24.                       " AGE            INT     NOT NULL, " + 
  25.                       " ADDRESS        CHAR(50), " + 
  26.                       " SALARY         REAL)"
  27.          stmt.executeUpdate(sql); 
  28.          stmt.close(); 
  29.          c.close(); 
  30.        } catch ( Exception e ) { 
  31.          System.err.println( e.getClass().getName()+": "+ e.getMessage() ); 
  32.          System.exit(0); 
  33.        } 
  34.        System.out.println("Table created successfully"); 
  35.      } 

编译和执行程序时,它会创建公司表testdb的数据库中,并会显示以下两行:

 
  1. Opened database successfully 
  2. Table created successfully 

INSERT 操作

下面的Java程序,显示我们如何在上面的例子中创建COMPANY 表中的记录:

 
  1. import java.sql.Connection; 
  2. import java.sql.DriverManager; 
  3. import java.sql.Statement; 
  4.  
  5. public class PostgreSQLJDBC { 
  6.    public static void main(String args[]) { 
  7.       Connection c = null
  8.       Statement stmt = null
  9.       try { 
  10.          Class.forName("org.postgresql.Driver"); 
  11.          c = DriverManager 
  12.             .getConnection("jdbc:postgresql://localhost:5432/testdb"
  13.             "manisha""123"); 
  14.          c.setAutoCommit(false); 
  15.          System.out.println("Opened database successfully"); 
  16.  
  17.          stmt = c.createStatement(); 
  18.          String sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " 
  19.                + "VALUES (1, 'Paul', 32, 'California', 20000.00 );"
  20.          stmt.executeUpdate(sql); 
  21.  
  22.          sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " 
  23.                + "VALUES (2, 'Allen', 25, 'Texas', 15000.00 );"
  24.          stmt.executeUpdate(sql); 
  25.  
  26.          sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " 
  27.                + "VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );"
  28.          stmt.executeUpdate(sql); 
  29.  
  30.          sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " 
  31.                + "VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );"
  32.          stmt.executeUpdate(sql); 
  33.  
  34.          stmt.close(); 
  35.          c.commit(); 
  36.          c.close(); 
  37.       } catch (Exception e) { 
  38.          System.err.println( e.getClass().getName()+": "+ e.getMessage() ); 
  39.          System.exit(0); 
  40.       } 
  41.       System.out.println("Records created successfully"); 
  42.    } 

当程序编译和执行,它会创建COMPANY表中的记录,并显示以下两行:

  1. Opened database successfully 
  2. Records created successfully 
 

http://wwwmaster.postgresql.org/download/mirrors-ftp?file=binary%2Fv8.1.4%2Fwin32%2Fpostgresql-8.1.4-1.zip
选择一个下载速度快的国家下载 postgresql数据库

到

http://jdbc.postgresql.org/download.html 下载jdbc驱动


安装 postgresql,建表  
 
--  Table: testtable --  DROP TABLE testtable; CREATE   TABLE  testtable (   id bigserial  NOT   NULL ,   name  varchar ( 30 ),    CONSTRAINT  testtable_pkey  PRIMARY   KEY  (id) WITHOUT OIDS; ALTER   TABLE  testtable OWNER  TO  postgres;

 

CREATE  SEQUENCE testtable_id_seq   INCREMENT  1   MINVALUE  1   MAXVALUE  9223372036854775807   START  3   CACHE  1 ; ALTER   TABLE  testtable_id_seq OWNER  TO  postgres;

连接测试...

package  com.test; import  org.postgresql. * ; import  java.sql. * ; public   class  TestDB  {      public  TestDB()  {     }      public   static   void  main(String args[])      {         System.out.print( " this is a test " );          try          {             Class.forName( " org.postgresql.Driver " ).newInstance();             String url = " jdbc:postgresql://localhost:5432/postgres " ;             Connection con = DriverManager.getConnection(url, " postgres " , " 1234 " );             Statement st = con.createStatement();             String sql = " select * from testtable " ;             ResultSet rs = st.executeQuery(sql);              while (rs.next())              {                 System.out.print(rs.getInt( 1 ));                 System.out.println(rs.getString( 2 ));             }             rs.close();             st.close();             con.close();                      }          catch (Exception ee)          {             System.out.print(ee.getMessage());         }     } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值