当前位置:早雪网网络学院编程文档数据库技术Postgresql → PostgreSQL7.0手册-接口-58. JDBC 接口

PostgreSQL7.0手册-接口-58. JDBC 接口

减小字体 增大字体 作者:不详  来源:supcode.com收集整理  发布时间:2005-7-23 12:22:15
第五十八章. JDBC 接口
内容 
制作 JDBC 接口 
为 JDBC准备数据库 
使用驱动 
装入 JDBC 
装载驱动 
与数据库联接 
发出查询和处理结果 
执行更新 
关闭联接 
使用大对象 
Postgres 对 JDBC API的扩展 
深入阅读 
作者:由 Peter T. Mount 执笔,他是JDBC 驱动的作者.
JDBC 是 Java 1.1 及以后的核心 API.它为 SQL 兼容的数据库提供了一个标准的接口集合. 
Postgres 提供了类型 4JDBC 驱动.类型 4 表明该驱动是用纯 Java 书写的,并且与数据库之间使用数据库自己的网络协议通讯.因此,驱动是平台无关的.一旦编译,该驱动可以用于任意平台. 

制作 JDBC 接口
编译驱动
驱动的源代码位于源码树的 src/interfaces/jdbc 目录.要编译之,你只需要进入该目录,然后键入: 
% make
编译完成后,你将在当前目录发现文件 postgresql.jar.这就是 JDBC 驱动. 
  
注意:你必须使用 make,而不是 javac,因为驱动因为性能原因使用了一些动态联接技巧,这些是 javac 办不到的.Makefile 将生成 jar 归档文件.
安装驱动
要使用驱动,.jar 文件 postgresql.jar 需要被包含在 CLASSPATH 里. 
例子
我有一个使用 JDBC 驱动的应用,该应用访问一个包含天文对象的大数据库.我已经有这个应用并且 jdbc 驱动安装在 /usr/local/lib 目录,并且 java jdk 安装在 /usr/local/jdk1.1.6. 
要运行应用,我可以用: 

export CLASSPATH = /usr/local/lib/finder.jar:/usr/local/lib/postgresql.jar:.
java uk.org.retep.finder.Main
装载驱动在本章后面部分介绍.

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

为 JDBC 准备数据库
因为 Java 只能使用 TCP/IP 联接,Postgres 的 postmaster 必须带 -i 参数运行. 
同样,必须配置 pg_hba.conf 文件.它放在 PGDATA 目录.缺省安装时,这个文件只允许 UNIX 域套接字访问.对联到同样 localhost 的JDBC 驱动(应用),你需要加一些象: 

host         all         127.0.0.1     255.255.255.255   password
的东西(到 pg_hba.conf 文件),这里允许从本地 JDBC 对所有数据库的访问. 
JDBC 驱动支持 trust,ident,password 和 crypt 认证模式.


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

使用驱动
本章并不想作为完整的 JDBC 编程的指导,但应该能帮你走出第一步.更多信息请参考标准 JDBCAPI 文档.同样,读一下包含在源代码里的例子.其中的基本例子在这里使用.

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

装入 JDBC
任何使用 JDBC 的程序需要输入 java.sql 包,用: 
import java.sql.*;
关键:不要输入 postgresql 包.如果这样做,你的源码将不能编译,因为 javac 会被你搞糊涂。

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

装载驱动
在你试图与数据库连接之前,你需要装载驱动.有两种方法,那种更好取决于你使用的代码. 
在第一种方法里,你的代码用 Class.forName() 方法显式装载驱动.对于 Postgres,你要用: 

Class.forName("postgresql.Driver");
这样将装载驱动,并且在装载时,驱动将自动与 JDBC 注册自己. 
注意:forName() 方法可以抛出一个 ClassNotFoundException,所以如果驱动不可获得时你需要捕获它. 

这是最常用的方法,但是把你的代码限制于 Postgres 专用.如果你的代码以后还要访问其他数据库,并且你不想使用我们的扩展,那么第二种方法可用. 

第二种方法把驱动做为参数在 JVM 启动时传递给它,使用 -D 参数. 

% java -Djdbc.drivers=postgresql.Driver example.ImageViewer
在这个例子里,JVM 将试图把驱动作为它的初始化的一部分装载.一旦完成,启动 ImageViewer。 
现在,这个方法是一个更好的手段,因为它允许你的代码用于其他数据库,而不用重新编译代码.唯一要修改的东西是 URL,我们下面要提到. 

最后一件事情.当你的代码试图打开一个联接,而且你收到一个抛出的 No driver available SQLException 例外,这可能是因为驱动不在 classpath (类路径)里,或者参数值不正确.


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

与数据库联接
在 JDBC 里,数据库是用 URL (Uniform Resource Locator)(统一资源定位器)表示的.在 Postgres 里,这可以由下面几种格式之一表示: 
jdbc:postgresql:database 
jdbc:postgresql://host/database 

jdbc:postgresql://hostport/database

这里: 
  
host 
服务器的主机名.缺省是 "localhost". 
port 
服务器监听的端口号.缺省时是 Postgres 标准的端口号(5432). 
database 
数据库名. 
要联接(数据库),你需要从 JDBC 获取一个联接实例(Connection instance).要做这些,你要使用 DriverManager.getConnection() 方法: 
Connection db = DriverManager.getConnection(url,user,pwd);


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

发出查询和处理结果
在任何你想向数据库运行一个 SQL 语句的时候,你都需要一个 Statement (语句)实例.一旦你拥有了一个 Statement (语句),你就可以使用 executeQuery() 方法来运行一个查

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]  下一页

[数据载入中...] [返回上一页] [打 印]