利用JavaJDBC进行数据库访问吴家骥.docx

上传人:b****8 文档编号:10919996 上传时间:2023-02-23 格式:DOCX 页数:28 大小:32.19KB
下载 相关 举报
利用JavaJDBC进行数据库访问吴家骥.docx_第1页
第1页 / 共28页
利用JavaJDBC进行数据库访问吴家骥.docx_第2页
第2页 / 共28页
利用JavaJDBC进行数据库访问吴家骥.docx_第3页
第3页 / 共28页
利用JavaJDBC进行数据库访问吴家骥.docx_第4页
第4页 / 共28页
利用JavaJDBC进行数据库访问吴家骥.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

利用JavaJDBC进行数据库访问吴家骥.docx

《利用JavaJDBC进行数据库访问吴家骥.docx》由会员分享,可在线阅读,更多相关《利用JavaJDBC进行数据库访问吴家骥.docx(28页珍藏版)》请在冰豆网上搜索。

利用JavaJDBC进行数据库访问吴家骥.docx

利用JavaJDBC进行数据库访问吴家骥

利用JavaJDBC进行数据库访问

吴家骥 李德河

(中国科学院陕西天文台,陕西省临潼,710600)

BC访问数据库,只须下载返回的数据,大大提高了速

度。

[2]

JDBC扩展了Java的功能,例如,用Java和JDBCAPI可以发布含有applet的网页,而该

applet使用的信息可能来自远程数据库。

企业也可以用JDBC通过Intranet将所有职员连

到一个或多个内部数据库中(即使这些职员所用的计算机有Windows、Linux、Macintosh和

UNIX等各种不同的操作系统)。

4 JDBC与ODBC的区别[3]

Microsoft的ODBC(开放式数据库连接)API是使用最广的、用于访问关系数据库的编

程接口,几乎在所有平台上它都能连接所有的数据库。

但ODBC不适合直接在Java中使

用,因为它使用C语言接口,从Java调用本地C代码,在安全性、实现、坚固性和程序的自动

移植性方面都有许多缺点。

Java没有指针,而ODBC却对指针用得很广泛(包括很容易出

错的指针“void*”)。

另外,必须手动地将ODBC驱动程序安装在每台客户机上,运用Thin

JDBC技术,客户机只须一个Web浏览器。

所以,JDBC更适合在Internet上运用。

事实上,

JDBC保留了ODBC的基本设计特征,两种接口都基于X/OpenSQLCLI(调用级接口)。

5 JDBC原理

JDBC主要有2种接口,分别是面向程序开发人员的JDBCAPI和面向驱动程序开发商

的JDBCDriverAPI。

它们的功能如图1所示。

图1 JDBC结构示意图

目前JDBC驱动程序可分为以下4个种类:

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

利用ODBC驱动程序提供JDBC访问。

应注

意,必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程

序的每个客户机上。

因此,这种类型的驱动程序最适合于企业网(这种网络上客户机的安装

156陕西天文台台刊                23卷

∥输入JDBC类

importjava.sql.*;

importjava.awt.*;

importjava.io.*;

importjava.util.*;

publicclassApplet2extendsjava.applet.Applet

{∥指定要加载的驱动

 staticfinalStringdriver-class=“oracle.odbc.driver.OracleDriver”;

 ∥指定连接字符串

 staticfinalStringconnect-string=

          “jdbc:

oracle:

thin:

username/password@hostname:

1521:

v8i815”;

 staticfinalStringquery=“select*frommy-testDB”;∥定义一个对数据库的查询

 Buttonexecute-button;  ∥定义一个按钮

 TextAreaoutput; ∥定义一个文本域,用来显示查询结果

 Connectionconn; ∥定义一个数据库连接

 ∥创建用户界面

 publicvoidinit()

 {

 this.setLayout(newBorderLayout());

 Panelp=newPanel();

 p.setLayout(newFlowLayout(FlowLayout,LEFT));

 execute-button=newButton(“connectJDBC”);∥实例化按钮

 p.add(“North”,p);

 output=newTextAre(10,60);∥实例化文本域

 this.add(“Center”,output);

}

∥当按钮被单击所相应的事件

publicbooleanaction(Eventev,Objectarg)

{

 if(ev.targer==execute-button)

 {

158陕西天文台台刊                23卷

三层结构的应用程序服务器代码。

(2)本地API-部分用Java来编写的驱动程序:

这种类型的驱动程序把客户机API上

的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。

需注意,象桥驱

动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。

(3)JDBC网络纯Java驱动程序:

这种驱动程序将JDBC转换为与DBMS无关的网络

协议,之后这种协议又被某个服务器转换为一种DBMS协议。

这种网络服务器中间件能够

将它的纯Java客户机连接到多种不同的数据库上。

所用的具体协议取决于提供者。

通常,

这是最为灵活的JDBC驱动程序。

有可能所有这种解决方案的提供者都提供适合于In-

tranet用的产品。

为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全

性、通过防火墙的访问等方面的额外要求。

(4)本地协议纯Java驱动程序:

这种类型的驱动程序将JDBC调用直接转换为DBMS

所使用的网络协议。

这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的

一个很实用的解决方法。

由于许多这样的协议都是专用的,因此数据库提供者自己将是主

要来源,有几家提供者已在进行这一工作。

预计第(3)、(4)类驱动程序将成为从JDBC访问数据库的首选方法,第

(1)、

(2)类驱动

程序在直接的纯Java驱动程序还没有上市前将会作为过渡方案来使用。

第(3)、(4)类驱动

程序提供了Java的所有优点,包括自动安装(例如,通过使用JDBC驱动程序的applet来下

载该驱动程序)。

JDBCAPI预览:

⑴java.sql.DriverManager:

提供调入驱动程序的方法,并支持java.sql.Driver接口中

的类创建数据库的连接,即负责处理JDBC数据库驱动程序的加载和卸载。

⑵java.sql.Connection:

完成对一个指定数据库的连接。

⑶java.sql.Statement:

同一个连接,一起将SQL语句发送到数据库中。

⑷java.sql.PreparedStatement:

同一个连接,但是以预编译的形式发送SQL语句。

⑸java.sql.CallableStatement:

同一个连接,但是以调用数据库存储函数的形式发送。

⑹java.sql.ResultSet:

返回包含符合SQL语句中条件的所有行,并且它通过一套get

方法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的访问。

6 应用举例

此例为Javaapplet,数据库为oracle8i,操作系统为Linux,Web服务器为Apache,客户端

仅需一个Web浏览器(若浏览器不支持Java,须安装Javaplug-in)。

开发工具为JDK1.2.2。

∥以下代码可以用作模板。

仅需

∥替换相应的url、登录和口令,然后替换

∥您要发送到数据库中的SQL语句。

∥模块:

JdbcApplet.java

∥描述:

JDBC的测试程序。

此javaapplet将与oracle的JDBC驱动程序连接,发出select语句,

157第23卷 第2期        吴家骥等:

 利用JavaJDBC进行数据库访问

摘   要

Java现已成为开发Internet应用最热门的语言,而JDBC则是Java程序访问

数据库最重要的技术。

这里要介绍的是在WWW环境下,运用JavaJDBC连接数

据库的技术,及JDBC的原理和例子。

关键词  Java JDBC 数据库

分类号  TP312

1 引 言

由于传统的客户/服务器数据库模式缺乏扩展性和跨平台性,并且客户端维护成本高。

所以,随着网络的发展,基于Java的JDBC技术的Web数据库就弥补了这方面的不足,真正

做到了“一次编写,任何地方运行”[1]。

2 什么是JDBC

JDBCTM是一种用于执行SQL语句的JavaTMAPI(与ODBC不同的是JDBC本身是个商

标名,而不是JavaDatabaseConnectivity的缩写词)。

JDBC是由JavaSoft定义的Java与数

据库连接的接口。

JDBC允许任何使用Java语言编写的小应用程序(applet)或应用程序(ap-

plication)访问远程数据库、获取数据,并对数据库进行更新存储。

而且,使用Java编程语言

编写程序,无须担忧要为不同的平台编写不同的应用程序。

将Java和JDBC结合起来,程序

员将只需写一遍程序就可让它在任何平台上运行。

3 JDBC能作些什么

Java和JDBC的结合,使信息传播变得容易和经济,即使这些信息是储存在不同数据库

管理系统上,企业可继续使用它们安装好的数据库,并能便捷地存取信息。

新程序的开发期

很短,安装和版本控制将大为简化。

程序员可只编写一遍应用程序或只更新一次,然后将它

放到服务器上,随后任何人就都可得到最新版本的应用程序。

对于商务上的销售信息服务,

Java和JDBC可为外部客户提供获取信息更新的更好方法。

特别是在交互频繁的网页中,

如果用通常的CGI方式访问数据库,用户每次提交表单后,浏览器都需要刷新、下载页面。

2000-06-20收到原稿,2000-12-18收到修改稿

文本域

 ∥判断是否打开一个数据库连接

 if(conn==null)

 {

 ∥加载JDBC驱动程序

 output.appendText(“LoadingJDBCdriver”+driver-class+“n”);

 Class.forName(driver-class);

 ∥连接到指定数据库

 output.appendText(“Connectingto”+connect-string+“n”);

 conn=DriverManager.getConnection(connect-string);

 output.appendText(“Connectedn”);∥如果不能连接,则抛出异常。

因此,如果进

∥入这一步,则已成功连接到数据库。

}

∥创建一个Statement对象,使我们可以向驱动程序提交SQL语句

Statementstmt=conn.createStatement();

∥提交查询,创建ResultSet对象

output.appendText(“Executingquery”+query+“n”);

ResultSetrset=stmt.executeQuery(query);

∥显示数据并获取它,直到结果集末尾

while(rset.next())

 output.appendText(rset.getString

(1)+“n”); ∥在文本域中显示查询结果

output.appendText(“don.n”);

}

catch(Exceptione)

{

 output.appendText(e.getMessage()+”n”);∥显示异常

}

returntrue;

}

else

 returnfalse;

159第23卷 第2期        吴家骥等:

 利用JavaJDBC进行数据库访问

}

}

本例中的客户端无须安装oracle客户端协议,Java程序放在服务器端,使升级和维护非

常方便。

当嵌有Javaapplet的网页被打开时,

(1)Java小程序会通过JDBC直接连接服务器端数据库。

首先要加载JDBC数据库驱

动程序,然后建立连接。

本例中使用Class.forName方法显示加载驱动程序,通过调用

DriverManager.getConnection得到一个java.sql.Connection对象,参数connect-string指定

了要访问的数据库。

(2)执行查询语句。

创建Statement对象,使用executeQuery方法执行SQL语句。

(3)检索结果集。

ResultSet对象包括一个查询语句返回的表,这个表包括所有的查询

结果。

对这个表进行处理,最后的显示结果给用户。

7 结束语

目前开发电子商务最热门的JavaServerPage(JSP)技术,便是通过JDBC来实现对后台

数据库的访问。

由于Java具有其他语言所不具备的易用性、跨平台性和安全性,必将成为

最受欢迎的编程语言。

参考文献

[1] http:

[2] 齐永强等.JDBC连接数据库.重庆邮电学院学报,1999,

(1):

63~66

[3] JDK1.2help,

DatabaseAccesswithJavaJDBC

WUJia-Ji  LIDe-He

(ShaanxiAstronomicalObservatory,TheChineseAcademyofSciences,Lintong,Shaanxi,710600)

Abstract

JavahasbecomethemostpopularprogramlanguageforInternetapplicationandJDBCis

themostimportantmethodforJavaprogramtoaccessdatabase.Thetechniqueofdatabaseac-

cesswithJavaJDBC,andtheprincipleandexampleforJDBCinWWWenviromentareintro-

ducedinthispaper.

BC访问数据库,只须下载返回的数据,大大提高了速

度。

[2]

JDBC扩展了Java的功能,例如,用Java和JDBCAPI可以发布含有applet的网页,而该

applet使用的信息可能来自远程数据库。

企业也可以用JDBC通过Intranet将所有职员连

到一个或多个内部数据库中(即使这些职员所用的计算机有Windows、Linux、Macintosh和

UNIX等各种不同的操作系统)。

4 JDBC与ODBC的区别[3]

Microsoft的ODBC(开放式数据库连接)API是使用最广的、用于访问关系数据库的编

程接口,几乎在所有平台上它都能连接所有的数据库。

但ODBC不适合直接在Java中使

用,因为它使用C语言接口,从Java调用本地C代码,在安全性、实现、坚固性和程序的自动

移植性方面都有许多缺点。

Java没有指针,而ODBC却对指针用得很广泛(包括很容易出

错的指针“void*”)。

另外,必须手动地将ODBC驱动程序安装在每台客户机上,运用Thin

JDBC技术,客户机只须一个Web浏览器。

所以,JDBC更适合在Internet上运用。

事实上,

JDBC保留了ODBC的基本设计特征,两种接口都基于X/OpenSQLCLI(调用级接口)。

5 JDBC原理

JDBC主要有2种接口,分别是面向程序开发人员的JDBCAPI和面向驱动程序开发商

的JDBCDriverAPI。

它们的功能如图1所示。

图1 JDBC结构示意图

目前JDBC驱动程序可分为以下4个种类:

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

利用ODBC驱动程序提供JDBC访问。

应注

意,必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程

序的每个客户机上。

因此,这种类型的驱动程序最适合于企业网(这种网络上客户机的安装

156陕西天文台台刊                23卷

∥输入JDBC类

importjava.sql.*;

importjava.awt.*;

importjava.io.*;

importjava.util.*;

publicclassApplet2extendsjava.applet.Applet

{∥指定要加载的驱动

 staticfinalStringdriver-class=“oracle.odbc.driver.OracleDriver”;

 ∥指定连接字符串

 staticfinalStringconnect-string=

          “jdbc:

oracle:

thin:

username/password@hostname:

1521:

v8i815”;

 staticfinalStringquery=“select*frommy-testDB”;∥定义一个对数据库的查询

 Buttonexecute-button;  ∥定义一个按钮

 TextAreaoutput; ∥定义一个文本域,用来显示查询结果

 Connectionconn; ∥定义一个数据库连接

 ∥创建用户界面

 publicvoidinit()

 {

 this.setLayout(newBorderLayout());

 Panelp=newPanel();

 p.setLayout(newFlowLayout(FlowLayout,LEFT));

 execute-button=newButton(“connectJDBC”);∥实例化按钮

 p.add(“North”,p);

 output=newTextAre(10,60);∥实例化文本域

 this.add(“Center”,output);

}

∥当按钮被单击所相应的事件

publicbooleanaction(Eventev,Objectarg)

{

 if(ev.targer==execute-button)

 {

158陕西天文台台刊                23卷

三层结构的应用程序服务器代码。

(2)本地API-部分用Java来编写的驱动程序:

这种类型的驱动程序把客户机API上

的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。

需注意,象桥驱

动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。

(3)JDBC网络纯Java驱动程序:

这种驱动程序将JDBC转换为与DBMS无关的网络

协议,之后这种协议又被某个服务器转换为一种DBMS协议。

这种网络服务器中间件能够

将它的纯Java客户机连接到多种不同的数据库上。

所用的具体协议取决于提供者。

通常,

这是最为灵活的JDBC驱动程序。

有可能所有这种解决方案的提供者都提供适合于In-

tranet用的产品。

为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全

性、通过防火墙的访问等方面的额外要求。

(4)本地协议纯Java驱动程序:

这种类型的驱动程序将JDBC调用直接转换为DBMS

所使用的网络协议。

这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的

一个很实用的解决方法。

由于许多这样的协议都是专用的,因此数据库提供者自己将是主

要来源,有几家提供者已在进行这一工作。

预计第(3)、(4)类驱动程序将成为从JDBC访问数据库的首选方法,第

(1)、

(2)类驱动

程序在直接的纯Java驱动程序还没有上市前将会作为过渡方案来使用。

第(3)、(4)类驱动

程序提供了Java的所有优点,包括自动安装(例如,通过使用JDBC驱动程序的applet来下

载该驱动程序)。

JDBCAPI预览:

⑴java.sql.DriverManager:

提供调入驱动程序的方法,并支持java.sql.Driver接口中

的类创建数据库的连接,即负责处理JDBC数据库驱动程序的加载和卸载。

⑵java.sql.Connection:

完成对一个指定数据库的连接。

⑶java.sql.Statement:

同一个连接,一起将SQL语句发送到数据库中。

⑷java.sql.PreparedStatement:

同一个连接,但是以预编译的形式发送SQL语句。

⑸java.sql.CallableStatement:

同一个连接,但是以调用数据库存储函数的形式发送。

⑹java.sql.ResultSet:

返回包含符合SQL语句中条件的所有行,并且它通过一套get

方法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的访问。

6 应用举例

此例为Javaapplet,数据库为oracle8i,操作系统为Linux,Web服务器为Apache,客户端

仅需一个Web浏览器(若浏览器不支持Java,须安装Javaplug-in)。

开发工具为JDK1.2.2。

∥以下代码可以用作模板。

仅需

∥替换相应的url、登录和口令,然后替换

∥您要发送到数据库中的SQL语句。

∥模块:

JdbcApplet.java

∥描述:

JDBC的测试程序。

此javaapplet将与oracle的JDBC驱动程序连接,发出select语句,

157第23卷 第2期        吴家骥等:

 利用JavaJDBC进行数据库访问

摘   要

Java现已成为开发Internet应用最热门的语言,而JDBC则是Java程序访问

数据库最重要的技术。

这里要介绍的是在WWW环境下,运用JavaJDBC连接数

据库的技术,及JDBC的原理和例子。

关键词  Java JDBC 数据库

分类号  TP312

1 引 言

由于传统的客户/服务器数据库模式缺乏扩展性和跨平台性,并且客户端维护成本高。

所以,随着网络的发展,基于Java的JDBC技术的Web数据库就弥补了这方面的不足,真正

做到了“一次编写,任何地方运行”[1]。

2 什么是JDBC

JDBCTM是一种用于执行SQL语句的JavaTMAPI(与ODBC不同的是JDBC本身是个商

标名,而不是JavaDatabaseConnectivity的缩写词)。

JDBC是由JavaSoft定义的Java与数

据库连接的接口。

JDBC允许任何使用Java语言编写的小应用程序(applet)或应用程序(ap-

plication)访问远程数据库、获取数据,并对数据库进行更新存储。

而且,使用Java编程语言

编写程序,无须担忧要为不同的平台编写不同的应用程序。

将Java和JDBC结合起来,程序

员将只需写一遍程序就可让它在任何平台上运行。

3 JDBC能作些什么

Java和JDBC的结合,使信息传播变得容易和经济,即使这些信息是储存在不同数据库

管理系统上,企业可继续使用它们安装好的数据库,并能便捷地存取信息。

新程序的开发期

很短,安装和版本控制将大为简化。

程序员可只编写一遍应用程序或只更新一次,然后将它

放到服务器上,随后任何人就都可得到最新版本的应用程序。

对于商务上的销售信息服务,

Java和JDBC可为外部客户提供获取信息更新的更好方法。

特别是在交互频繁的网页中,

如果用通常的CGI方式访问数据库,用户每次提交表单后,浏览器都需要刷新、下载页面。

2000-06-20收到原稿,2000-12-18收到修改稿

文本域

 ∥判断是否打开一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1