基于Java语言实现数据库的访问_谷庆华

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Java语言实现数据库的访问

谷庆华,李成贵

(北京航空航天大学仪器科学与光电工程学院,北京100083)

数据库查询的Java实现

下面介绍利用JDBC—ODBC桥实现对Microsoft

Access数据库的SQL查询的方法。

2.1数据库建立和数据源设置

Microsoft Access具备完善的数据库功能,可以作

为独立的DBMS使用,是PC机上开发客户机/服务器

型数据库应用的优秀工具。它将若干个相互关联的表

(table)组成一个数据库(*.mdb)。这里作为例子使

用的数据库dbinfor包括2个表:tbinformation1与tbin-

formation2,其结构分别如表1、表2所示。

表1tbinformation1表结构

id name phone address email

表2tbinformation2表结构

id userid department score trial

在这2个数据表之间建立了一个关系,即在表

tbinformation1的id字段与表tbinformation2的userid

字段之间,它们内容相同。数据库制好后,打开Win-

dows的“开始”菜单,选择“设置”菜单下的“控制面

板”,从中启动微软的ODBC数据源,设置与数据库相

应的微软ODBC驱动器和数据源。

ODBC是用C语言写的在多种不同的DBMS中存

取数据的标准应用程序接口。目前应用最广的是微软

的ODBC,它几乎可将所有平台的所有数据库连接起

来。ODBC在应用程序与特定数据库之间插入一个驱

动程序管理器,每种数据库引擎都需要向驱动程序管

理器注册它自己的ODBC驱动程序,驱动程序管理器

将与ODBC兼容的SQL请求从应用程序传给ODBC

驱动程序,并由ODBC驱动程序把SQL请求翻译为对

数据库的固有调用,从而达到应用程序访问操作数据

库的目的。JDBC采用JDBC-ODBC桥接方式在Java

应用程序中使用ODBC。

2.2访问数据库的Java应用程序的编写

用JDBC编写访问、操作数据库的Java应用程序

一般完成下面4件事[4]:

(1)加载JDBC-ODBC桥驱动程序。

为了与特定的数据源相连,JDBC必须加载相应的

驱动程序。加载的方式可以采用Class.forName方法显式加载,如下面语句加载Sun公司的JDBC-ODBC

桥驱动:

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)

(2)建立与数据库的连接。

运用DriverManager类的getConnection方法建立

与数据源的连接:

sourceURL=“jdbc:odbc:”;

databaseConnection=DriverManager.getConnection (sourceURL,“Administrator”,“password”);

该语句与sourceURL对象指定的数据源建立连

接。JDBC URL提供了一种标识数据库驱动器的方

式,其中用冒号分为3部分[5],依次为:协议(在JDBC

中只能为jdbc)、子协议(用来标识一个数据库的连接机制,此处选用odbc)和子名称(ODBC数据源的名称,

为dbinfor)。

在JDBC中,java.sql.DriverManager类的目的是

提供在应用中使用的不同数据库驱动器的一个通用的访问层,使应用程序不用直接使用单独的Driver实现类,而是使用DriverManager类去得到连接。若连接成功,则返回一个Connection类的对象databaseConnec- tion,以后对这个数据源的操作都是基于databaseCon- nection对象的。

Connection类代表与数据库的连接。连接过程包

括所执行的SQL语句和在该连接上所返回的结果。

一个应用程序可与单个数据库进行一个或多个连接, 也可与多个数据库进行连接。

(3)执行SQL查询语句。

文中介绍的是基于Statement对象的查询方法。

执行SQL查询语句需要先建立一个Statement对象,

下面的语句建立名为myStatement的Statement对象: Statement myStatement

=databaseConnection.createStatement();

Statement对象用于将SQL语句发送到数据库

中。实际上有3种Statement对象,它们都可作为在给定连接上执行SQL语句的容器:Statement,Prepared- Statement(从Statement继承而来)和CallableStatement (从PreparedStatement继承而来)[6]。它们专用于发送特定类型的SQL语句:Statement对象用于执行不带

参数的简单SQL语句;PreparedStatement对象用于执行带或不带IN参数的预编译SQL语句;CallableState- ment对象用于执行对数据库已存储过程的调用。Statement接口提供了执行语句和获取结果的基本方法;PreparedStatement接口添加了处理IN参数的方

法;而CallableStatement添加了处理OUT参数的方

法。

通过创建Statement对象,可用这个对象的方法执

行SQL语句,并产生一个结果集对象,如下面的语句

所示:

ResultSet authorResults

=myStatement.executeQuery(queryWildcard);

该语句将在authorResults中返回查询结果,其中

queryWildcard为预先设定的SQL查询语句。

·15·第2期谷庆华等:基于Java语言实现数据库的访问DBC写的程序能够自动地将SOL语句传送给相应

的数据库管理系统。

不但如此,使用Java编写的应用程序可以在任何

支持Java的平台上运行,不必在不同的平台上编写不

同的应用程序。Java和JDBC的结合可以让开发人员

在开发数据库应用时真正实现一次编写,处处运行。

1.3JDBC接口概貌

JDBC接口分为两个层次:一个是面向程序开发人

员的JDBC API;另外一个是底层的JDBC Driver API

(驱动程序)[2]。

1.3.1JDBC API

JDBCAPI被描述成为抽象的Java接口,应用程序

可以对某个数据库打开连接,执行SQL语句并且处理

结果。最重要的接口有4个:

(1)java.sql.DriverManager,处理驱动程序的调入

并且对产生新的数据库连接提供支持。

(2)java.sql.Connection,代表对特定数据库的连

接。

(3)java.sql.Statement,代表一个特定的容器,来

对一个特定的数据库执行S语句。其中又有两个子类

型:java.sql.PreparedStatement,用于执行预编译的Java

语句;Java.sql.CallableStatement,用于执行对一个数据

库内嵌过程的调用。

(4)java.sql.ResultSet,控制对一个特定语句的行

数据的存取。

1.3.2JDBC Driver API(驱动程序)

在JDBC的发展经历中,产生了4种不同的驱动

程序[3],现分述如下:

(1)JDBC-ODBC桥加ODBC驱动程序。

这类驱动程序利用类似桥接器的技术来连接数据

库,通过JDBC-ODBC桥,开发人员可以使用JDBC来

存取ODBC数据源。不足的是,它需要在客户端安装

ODBC驱动程序,即必须安装Microsoft Windows的某

个版本,因而最适合于企业网,或者是用Java编写的3

相关文档
最新文档