在java程序中使用postgresql之前,我们需要确保在机器上安装了postgresql jdbc和java。 您可以在机器上检查是否正确安装了java:java教程。 现在我们来看一下如何设置postgresql jdbc驱动。
从postgresql-jdbc存储库下载最新版本的postgresql-(version).jdbc.jar
。
在类路径中添加下载的jar
文件postgresql-(version).jdbc.jar
,或者您可以使用-classpath
选项,如下面的例子所述。
以下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
以下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