Postgresql 专题
专题目录
您的位置:database > Postgresql专题 > Java连接PostgreSQL数据库
Java连接PostgreSQL数据库
作者:--    发布时间:2019-11-20

在java程序中使用postgresql之前,我们需要确保在机器上安装了postgresql jdbc和java。 您可以在机器上检查是否正确安装了java:java教程。 现在我们来看一下如何设置postgresql jdbc驱动。

  • postgresql-jdbc存储库下载最新版本的postgresql-(version).jdbc.jar

  • 在类路径中添加下载的jar文件postgresql-(version).jdbc.jar,或者您可以使用-classpath选项,如下面的例子所述。

java连接到postgresql数据库

以下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");
   }
}

在编译并运行上述程序之前,请在postgresql安装目录中找到pg_hba.conf文件并添加以下行:

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

您可以启动/重新启动postgres服务器,使用以下命令运行:

[root@host]# service postgresql restart
stopping postgresql service:                               [  ok  ]
starting postgresql service:                               [  ok  ]

现在,我们来编译并运行上面的程序来获得与testdb的连接。 在这里使用用户id为postgres和密码为123来访问数据库。 您可以根据数据库配置和设置进行更改。 我们还假定当前版本的jdbc驱动程序postgresql-9.2-1002.jdbc3.jar在当前路径中(c:\tools\)可用。

c:\javapostgresintegration>javac postgresqljdbc.java
c:\javapostgresintegration>java -cp c:\tools\postgresql-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数据库中创建company表,并显示以下两行:

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

select操作

以下java程序显示了如何从上述示例中创建的company表中获取和显示记录:

import java.sql.connection;
import java.sql.drivermanager;
import java.sql.resultset;
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();
         resultset rs = stmt.executequery( "select * from company;" );
         while ( rs.next() ) {
            int id = rs.getint("id");
            string  name = rs.getstring("name");
            int age  = rs.getint("age");
            string  address = rs.getstring("address");
            float salary = rs.getfloat("salary");
            system.out.println( "id = " + id );
            system.out.println( "name = " + name );
            system.out.println( "age = " + age );
            system.out.println( "address = " + address );
            system.out.println( "salary = " + salary );
            system.out.println();
         }
         rs.close();
         stmt.close();
         c.close();
       } catch ( exception e ) {
         system.err.println( e.getclass().getname()+": "+ e.getmessage() );
         system.exit(0);
       }
       system.out.println("operation done successfully");
     }
}

程序编译执行时,会产生以下结果:

opened database successfully
id = 1
name = paul
age = 32
address = california
salary = 20000.0

id = 2
name = allen
age = 25
address = texas
salary = 15000.0

id = 3
name = teddy
age = 23
address = norway
salary = 20000.0

id = 4
name = mark
age = 25
address = rich-mond
salary = 65000.0

operation done successfully

更新操作

以下java代码显示了如何使用update语句来更新指定记录,然后从company表中获取和显示更新的记录:

import java.sql.connection;
import java.sql.drivermanager;
import java.sql.resultset;
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 = "update company set salary = 25000.00 where id=1;";
         stmt.executeupdate(sql);
         c.commit();

         resultset rs = stmt.executequery( "select * from company;" );
         while ( rs.next() ) {
            int id = rs.getint("id");
            string  name = rs.getstring("name");
            int age  = rs.getint("age");
            string  address = rs.getstring("address");
            float salary = rs.getfloat("salary");
            system.out.println( "id = " + id );
            system.out.println( "name = " + name );
            system.out.println( "age = " + age );
            system.out.println( "address = " + address );
            system.out.println( "salary = " + salary );
            system.out.println();
         }
         rs.close();
         stmt.close();
         c.close();
       } catch ( exception e ) {
         system.err.println( e.getclass().getname()+": "+ e.getmessage() );
         system.exit(0);
       }
       system.out.println("operation done successfully");
     }
}

程序编译执行时,会产生以下结果:

opened database successfully
id = 2
name = allen
age = 25
address = texas
salary = 15000.0

id = 3
name = teddy
age = 23
address = norway
salary = 20000.0

id = 4
name = mark
age = 25
address = rich-mond
salary = 65000.0

id = 1
name = paul
age = 32
address = california
salary = 25000.0

operation done successfully

删除操作

以下java代码显示了如何使用delete语句删除指定记录,然后从company表中获取并显示剩余的记录:

import java.sql.connection;
import java.sql.drivermanager;
import java.sql.resultset;
import java.sql.statement;


public class postgresqljdbc6 {
   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 = "delete from company where id=2;";
         stmt.executeupdate(sql);
         c.commit();

         resultset rs = stmt.executequery( "select * from company;" );
         while ( rs.next() ) {
            int id = rs.getint("id");
            string  name = rs.getstring("name");
            int age  = rs.getint("age");
            string  address = rs.getstring("address");
            float salary = rs.getfloat("salary");
            system.out.println( "id = " + id );
            system.out.println( "name = " + name );
            system.out.println( "age = " + age );
            system.out.println( "address = " + address );
            system.out.println( "salary = " + salary );
            system.out.println();
         }
         rs.close();
         stmt.close();
         c.close();
       } catch ( exception e ) {
         system.err.println( e.getclass().getname()+": "+ e.getmessage() );
         system.exit(0);
       }
       system.out.println("operation done successfully");
     }
}

程序编译执行时,会产生以下结果:

opened database successfully
id = 3
name = teddy
age = 23
address = norway
salary = 20000.0

id = 4
name = mark
age = 25
address = rich-mond
salary = 65000.0

id = 1
name = paul
age = 32
address = california
salary = 25000.0
operation done successfully

网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册