安装
在我们开始之前,我们需要在Java程序中使用Postgresql,确保Postgresql的JDBC和Java已经在机器上安装。可以检查机器上是否安装了Java。现在,让我们检查如何设置JDBC驱动。
如果有关于Java JDBC概念了解不是很多,那么建议花半小时学习JDBC教程。
连接到数据库
下面的Java代码显示了如何连接到一个现有的数据库。如果数据库不存在,那么它就会被创建,终于将返回一个数据库对象。
@H_404_44@- importjava.sql.Connection;
- importjava.sql.DriverManager;
- publicclassPostgresqlJDBC{
- publicstaticvoidmain(Stringargs[]){
- Connectionc=null;
- try{
- Class.forName("org.postgresql.Driver");
- c=DriverManager
- .getConnection("jdbc:postgresql://localhost:5432/testdb",
- "postgres","123");
- }catch(Exceptione){
- e.printStackTrace();
- System.err.println(e.getClass().getName()+":"+e.getMessage());
- System.exit(0);
- }
- System.out.println("Openeddatabasesuccessfully");
- }
- }
在编译和运行上面的程序,找到pg_hba.conf文件在Postgresql安装目录中,并添加下面一行:
@H_404_44@- #IPv4localconnections:
- hostallall127.0.0.1/32md5
可以start/restartPostgres的服务器的情况下,它没有运行使用下面的命令:
@H_404_44@现在让我们来编译和运行上面的程序,以获得testdb连接。在这里,我们使用的是 postgresas的用户ID和密码123来访问数据库。可以更改此数据库配置和设置。我们也假设当前版本的JDBC驱动程序为postgresql- 9.2-1002.jdbc3.jar,可在当前路径访问。
@H_404_44@- C:\JavaPostgresIntegration>javacPostgresqlJDBC.java
- C:\JavaPostgresIntegration>java-cpc:\tools\postgresql-9.2-1002.jdbc3.jar;C:\JavaPostgresIntegrationPostgresqlJDBC
- Opendatabasesuccessfully
创建表
下面的Java程序将被用于先前打开的数据库中创建一个表。确保这个表在目标数据库中没有创建过。
@H_404_44@- importjava.sql.*;
- importjava.sql.Connection;
- importjava.sql.DriverManager;
- importjava.sql.Statement;
- publicclassPostgresqlJDBC{
- publicstaticvoidmain(Stringargs[])
- {
- Connectionc=null;
- Statementstmt=null;
- try{
- Class.forName("org.postgresql.Driver");
- c=DriverManager
- .getConnection("jdbc:postgresql://localhost:5432/testdb",
- "manisha","123");
- System.out.println("Openeddatabasesuccessfully");
- stmt=c.createStatement();
- Stringsql="CREATETABLECOMPANY"+
- "(IDINTPRIMARYKEYNOTNULL,"+
- "NAMETEXTNOTNULL,"+
- "AGEINTNOTNULL,"+
- "ADDRESSCHAR(50),"+
- "SALARYREAL)";
- stmt.executeUpdate(sql);
- stmt.close();
- c.close();
- }catch(Exceptione){
- System.err.println(e.getClass().getName()+":"+e.getMessage());
- System.exit(0);
- }
- System.out.println("Tablecreatedsuccessfully");
- }
- }
编译和执行程序时,它会创建公司表testdb的数据库中,并会显示以下两行:
@H_404_44@- Openeddatabasesuccessfully
- Tablecreatedsuccessfully
INSERT 操作
下面的Java程序,显示我们如何在上面的例子中创建COMPANY表中的记录:
@H_404_44@- importjava.sql.Connection;
- importjava.sql.DriverManager;
- importjava.sql.Statement;
- publicclassPostgresqlJDBC{
- publicstaticvoidmain(Stringargs[]){
- Connectionc=null;
- Statementstmt=null;
- try{
- Class.forName("org.postgresql.Driver");
- c=DriverManager
- .getConnection("jdbc:postgresql://localhost:5432/testdb","123");
- c.setAutoCommit(false);
- System.out.println("Openeddatabasesuccessfully");
- stmt=c.createStatement();
- Stringsql="INSERTINTOCOMPANY(ID,NAME,AGE,ADDRESS,SALARY)"
- +"VALUES(1,'Paul',32,'California',20000.00);";
- stmt.executeUpdate(sql);
- sql="INSERTINTOCOMPANY(ID,SALARY)"
- +"VALUES(2,'Allen',25,'Texas',15000.00);";
- stmt.executeUpdate(sql);
- sql="INSERTINTOCOMPANY(ID,SALARY)"
- +"VALUES(3,'Teddy',23,'Norway',SALARY)"
- +"VALUES(4,'Mark','Rich-Mond',65000.00);";
- stmt.executeUpdate(sql);
- stmt.close();
- c.commit();
- c.close();
- }catch(Exceptione){
- System.err.println(e.getClass().getName()+":"+e.getMessage());
- System.exit(0);
- }
- System.out.println("Recordscreatedsuccessfully");
- }
- }
当程序编译和执行,它会创建COMPANY表中的记录,并显示以下两行:
- Openeddatabasesuccessfully
- Recordscreatedsuccessfully
--
Table:testtable
--
DROPTABLEtesttable;
CREATE
TABLE
testtable ( idbigserial
NOT
NULL
,name
varchar
(
30
),
CONSTRAINT
testtable_pkey
PRIMARY
KEY
(id) ) WITHOUTOIDS;
ALTER
TABLE
testtableOWNER
TO
postgres;
CREATE
SEQUENCEtesttable_id_seq INCREMENT
1
MINVALUE
1
MAXVALUE
9223372036854775807
START
3
CACHE
1
;
ALTER
TABLE
testtable_id_seqOWNER
TO
postgres;
连接测试...
package
com.test;
import
org.postgresql.
*
;
import
java.sql.
*
;
public
class
TestDB
{ public TestDB() { } public static void main(Stringargs[]) { System.out.print( " thisisatest " ); try { Class.forName( " org.postgresql.Driver " ).newInstance(); Stringurl = " jdbc:postgresql://localhost:5432/postgres " ; Connectioncon = DriverManager.getConnection(url, " postgres " , " 1234 " ); Statementst = con.createStatement(); Stringsql = " select*fromtesttable " ; ResultSetrs = 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 (Exceptionee) { System.out.print(ee.getMessage()); } } }