基于Java语言实现数据库的访问_谷庆华
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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