|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。本简介是从《JDBCTMDatabaseAccessfromJavaTM:ATutorialandAnnotatedReference》这本书中摘引来的。
JavaSoft今朝正在筹办这本书。这是一本教程,同时也是JDBC的主要参考手册,它将作为Java系列的构成部分在
1997年春季由Addison-Wesley出书公司出书。
1.1甚么是JDBCTM?
JDBCTM是一种用于实行SQL语句的JavaTMAPI(成心思的是,JDBC自己是个商标名而不是一个缩写字;但是,JDBC
常被以为是代表“Java数据库毗连(JavaDatabaseConnectivity)”)。它由一组用Java编程言语编写的类和接口
构成。JDBC为工具/数据库开辟职员供应了一个尺度的API,使他们可以用纯JavaAPI来编写数据库使用程序。
有了JDBC,向各类干系数据库发送SQL语句就是一件很简单的事。换言之,有了JDBCAPI,就不用为会见Sybase数
据库专门写一个程序,为会见Oracle数据库又专门写一个程序,为会见Informix数据库又写另外一个程序,等等。您只
需用JDBCAPI写一个程序就够了,它可向响应数据库发送SQL语句。并且,利用Java编程言语编写的使用程序,就
不必往忧愁要为分歧的平台编写分歧的使用程序。将Java和JDBC分离起来将使程序员只须写一遍程序便可让它在任何
平台上运转。
Java具有坚实、平安、易于利用、易于了解和可从收集上主动下载等特征,是编写数据库使用程序的出色言语。所必要的
只是Java使用程序与各类分歧数据库之间举行对话的办法。而JDBC恰是作为此种用处的机制。
JDBC扩大了Java的功效。比方,用Java和JDBCAPI能够公布含有applet的网页,而该applet利用的信息大概来
自远程数据库。企业也能够用JDBC经由过程Intranet将一切人员连到一个或多个外部数据库中(即便这些人员所用的盘算机
有Windows、Macintosh和UNIX等各类分歧的操纵体系)。跟着愈来愈多的程序员入手下手利用Java编程言语,对从Java
中便利地会见数据库的请求也在日趋增添。
MIS办理员们都喜好Java和JDBC的分离,由于它使信息传布变得简单和经济。企业可持续利用它们安装好的数据库,并
能便利地存失信息,即便这些信息是贮存在分歧数据库办理体系上。新程序的开辟期很短。安装和版本把持将年夜为简化。程
序员可只编写一遍使用程序或只更新一次,然后将它放到服务器上,随前任何人就都可失掉最新版本的使用程序。关于商务
上的发卖信息服务,Java和JDBC可为内部客户供应猎取信息更新的更好办法。
1.1.1JDBC的用处是甚么?
复杂地说,JDBC可做三件事:
与数据库创建毗连,
发送SQL语句,
处置了局。
以下代码段给出了以上三步的基础示例:
Connectioncon=DriverManager.getConnection(
"jdbc:odbc:wombat","login","password");
Statementstmt=con.createStatement();
ResultSetrs=stmt.executeQuery("SELECTa,b,cFROMTable1");
while(rs.next()){
intx=rs.getInt("a");
Strings=rs.getString("b");
floatf=rs.getFloat("c");
}
1.1.2JDBC是一种初级API,是初级API的基本
JDBC是个“初级”接口,也就是说,它用于间接挪用SQL命令。在这方面它的功效极佳,并比别的的数据库毗连API易
于利用,但它同时也被计划为一种基本接口,在它之上能够创建初级接口和工具。初级接口是“对用户友爱的”接口,它使
用的是一种更容易了解和更加便利的API,这类API在幕后被转换为诸如JDBC如许的初级接口。在编写本文时,正在开辟
两种基于JDBC的初级API:
一种用于Java的嵌进式SQL。最少已有一个供应者企图编写它。DBMS完成SQL:一种专门计划来与数据库团结利用的
言语。JDBC请求SQL语句必需作为String传给Java办法。相反,嵌进式SQL预处置器同意程序员将SQL语句间接与
Java混在一同利用。比方,可在SQL语句中利用Java变量,用以承受或供应SQL值。然后,嵌进式SQL预处置器将通
过JDBC挪用把这类Java/SQL的夹杂物转换为Java。
干系数据库表到Java类的间接映照。JavaSoft和别的供应者都宣称要完成该API。在这类“对象/干系”映照中,表中的
每行对应于类的一个实例,而每列的值对应于该实例的一个属性。因而,程序员可间接对Java对象举行操纵;存取数据所
需的SQL挪用将在“掩饰下”主动天生。别的还可供应更庞大的映照,比方将多个表中的行分离进一个Java类中。
跟着人们对JDBC的乐趣日趋增涨,愈来愈多的开辟职员一向在利用基于JDBC的工具,以使程序的编写加倍简单。程序员
也一向在编写力争使终极用户对数据库的会见变得更加复杂的使用程序。比方,使用程序可供应一个选择数据库义务的菜单。
义务被选定后,使用程序将给出提醒及空缺供填写实行选定义务所需的信息。所需信息输出后,使用程序将主动挪用所需的
SQL命令。在如许一种程序的帮忙下,即便用户基本不懂SQL的语法,也能够实行数据库义务。
1.1.3JDBC与ODBC和别的API的对照
今朝,Microsoft的ODBC(开放式数据库毗连)API多是利用最广的、用于会见干系数据库的编程接口。它能在几近所
有平台上毗连几近一切的数据库。为何Java不利用ODBC?
对这个成绩的回覆是:Java可使用ODBC,但最好是在JDBC的匡助下以JDBC-ODBC桥的情势利用,这一点我们稍后再
说。如今的成绩已酿成:“为何必要JDBC”?回覆以下:
ODBC不合适间接在Java中利用,由于它利用C言语接口。从Java挪用当地C代码在平安性、完成、坚实性和程序的
主动移植性方面都有很多弱点。
从ODBCCAPI到JavaAPI的字面翻译是不成取的。比方,Java没有指针,而ODBC却对指针用得很普遍(包含很简单
堕落的指针"void*")。您能够将JDBC设想成被转换为面向对象接口的ODBC,而面向对象的接口对Java程序员来讲较
易于吸收。
ODBC很难学。它把复杂和初级功效混在一同,并且即便关于复杂的查询,其选项也极其庞大。相反,JDBC只管包管复杂功
能的烦琐性,而同时在需要时同意利用初级功效。
启用“纯Java”机制必要象JDBC如许的JavaAPI。假如利用ODBC,就必需手动地将ODBC驱动程序办理器和驱动程序
安装在每台客户机上。假如完整用Java编写JDBC驱动程序则JDBC代码在一切Java平台上(从收集盘算机到年夜型机)
都能够主动安装、移植并包管平安性。
总之,JDBCAPI关于基础的SQL笼统和观点是一种天然的Java接口。它创建在ODBC上而不是从零入手下手。因而,熟习
ODBC的程序员将发明JDBC很简单利用。JDBC保存了ODBC的基础计划特性;现实上,两种接口都基于X/OpenSQLCLI
(挪用级接口)。它们之间最年夜的区分在于:JDBC以Java作风与长处为基本并举行优化,因而加倍易于利用。
比来,Microsoft又引进了ODBC以外的新API:RDO、ADO和OLEDB。这些计划在很多方面与JDBC是不异的,即它们
都是面向对象的数据库接口且基于可在ODBC上完成的类。但在这些接口中,我们未瞥见有出格的功效使我们要转而选择它
们来替换ODBC,特别是在ODBC驱动程序已创建起较为完美的市场的情形下。它们最多也就是在ODBC上加了一种粉饰而
已。这并非说JDBC不必要从其最后的版本再开展了;但是,我们以为年夜部分的新功效应回进诸如前一节中所述的对象/
干系映照和嵌进式SQL如许的初级API。
1.1.4两层模子和三层模子
JDBCAPI既撑持数据库会见的两层模子,同时也撑持三层模子。
在两层模子中,Javaapplet或使用程序将间接与数据库举行对话。这将必要一个JDBC驱动程序来与所会见的特定命据库
办理体系举行通信。用户的SQL语句被送往数据库中,而其了局将被送回给用户。数据库能够位于另外一台盘算机上,用户
经由过程收集毗连到下面。这就叫做客户机/服务器设置,个中用户的盘算机为客户机,供应数据库的盘算机为服务器。收集可
所以Intranet(它可将公司人员毗连起来),也能够是Internet。
在三层模子中,命令先是被发送到服务的“两头层”,然后由它将SQL语句发送给数据库。数据库对SQL语句举行处置并
将了局送回到两头层,两头层再将了局送回给用户。MIS主管们都发明三层模子很吸惹人,由于可用两头层来把持对公司数
据的会见和可作的的更新的品种。两头层的另外一个优点是,用户能够使用易于利用的初级API,而两头层将把它转换为响应
的初级挪用。最初,很多情形下三层布局可供应一些功能上的优点。
到今朝为止,两头层一般都用C或C++这类言语来编写,这些言语实行速率较快。但是,跟着最优化编译器(它把Java
字节代码转换为高效的特定于呆板的代码)的引进,用Java来完成两头层将变得愈来愈实践。这将是一个很年夜的前进,它
令人们能够充实使用Java的诸多长处(如坚实、多线程和平安等特性)。JDBC关于从Java的两头层来会见数据库十分
主要。
1.1.5SQL的分歧性
布局化查询言语(SQL)是会见干系数据库的尺度言语。坚苦的地方在于:固然年夜多半的DBMS(数据库办理体系)对其基础
功效都利用了尺度情势的SQL,但它们却不切合比来为更初级的功效界说的尺度SQL语法或语义。比方,并不是一切的数据
库都撑持贮存程序或内部毗连,那些撑持这一功效的数据库又互相纷歧致。人们但愿SQL中真正尺度的那部分可以举行扩
展以包含愈来愈多的功效。但同时JDBCAPI又必需撑持现有的SQL。
JDBCAPI办理这个成绩的一种办法是同意将任何查询字符串一向传到所触及的DBMS驱动程序上。这意味着使用程序能够
利用恣意多的SQL功效,但它必需冒如许的风险:有大概在某些DBMS上堕落。现实上,使用程序查询乃至纷歧定如果
SQL,大概说它能够是个为特定的DBMS计划的SQL的公用派生物(比方,文档或图像查询)。
JDBC处置SQL分歧性成绩的第二种办法是供应ODBC作风的本义子句。这将在4.1.5节“语句对象中的SQL本义语法”
中会商。
本义语法为几个罕见的SQL不合供应了一种尺度的JDBC语法。比方,对日期笔墨和已贮存历程的挪用都有本义语法。
关于庞大的使用程序,JDBC用第三种办法来处置SQL的分歧性成绩。它使用DatabaseMetaData接口来供应关于DBMS的
形貌性信息,从而使使用程序能顺应每一个DBMS的请求和功效。
因为JDBCAPI将用作开辟初级数据库会见工具和API的基本API,因而它还必需注重其一切下层修建的分歧性。“切合
JDBC尺度TM"代表用户可依附的JDBC功效的尺度级别。要利用这一申明,驱动程序最少必需撑持ANSISQL-2Entry
Level(ANSISQL-2代表美国国度尺度局1992年所接纳的尺度。EntryLevel代表SQL功效的特定清单)。驱动程序开
发职员可用JDBCAPI所带的测试工具包来断定他们的驱动程序是不是切合这些尺度。
“切合JDBC尺度TM”暗示供应者的JDBC完成已经由过程了JavaSoft供应的分歧性测试。这些分歧性测试将反省JDBC
API中界说的一切类和办法是不是都存在,并尽量地反省程序是不是具有SQLEntryLevel功效。固然,这些测试其实不完整,
并且JavaSoft今朝也偶然对各供应者的完成举行标级。但这类分歧性界说切实其实可对JDBC完成供应必定的可托度。跟着越
来越多的数据库供应者、毗连供应者、Internet供应者和使用程序编程员对JDBCAPI的承受,JDBC也正敏捷成为Java
数据库会见的尺度。
1.2JDBC产物
在编写本文时,有几个基于JDBC的产物已开辟终了或正在开辟中。固然,本节中的信息将很快成为过期信息。因而,有
关最新的信息,请查阅JDBC的网站,可经由过程从以下URL入手下手扫瞄找到:
http://java.sun.com/products/jdbc
1.2.1JavaSoft框架
JavaSoft供应三种JDBC产物组件,它们是Java开辟工具包(JDK)的构成部分:
JDBC驱动程序办理器,
JDBC驱动程序测试工具包,和
JDBC-ODBC桥。
JDBC驱动程序办理器是JDBC系统布局的支柱。它实践上很小,也很复杂;其次要感化是把Java使用程序毗连到准确的
JDBC驱动程序上,然后即加入。
JDBC驱动程序测试工具包为使JDBC驱动程序运转您的程序供应必定的可托度。只要经由过程JDBC驱动程序测试包的驱动程
序才被以为是切合JDBC尺度TM的。
JDBC-ODBC桥使ODBC驱动程序可被用作JDBC驱动程序。它的完成为JDBC的疾速开展供应了一条路子,其久远方针提
供一种会见某些不罕见的DBMS(假如对这些不罕见的DBMS未完成JDBC)的办法。
1.2.2JDBC驱动程序的范例
我们今朝所晓得的JDBC驱动程序可分为以下四个品种:
JDBC-ODBC桥加ODBC驱动程序:JavaSoft桥产物使用ODBC驱动程序供应JDBC会见。注重,必需将ODBC二进制代码
(很多情形下还包含数据库客户机代码)加载到利用该驱动程序的每一个客户机上。因而,这类范例的驱动程序最合适于企业
网(这类收集上客户机的安装不是次要成绩),大概是用Java编写的三层布局的使用程序服务器代码。
当地API-部分用Java来编写的驱动程序:这类范例的驱动程序把客户机API上的JDBC挪用转换为Oracle、
Sybase、Informix、DB2或别的DBMS的挪用。注重,象桥驱动程序一样,这类范例的驱动程序请求将某些二进制代码加载
到每台客户机上。
JDBC收集纯Java驱动程序:这类驱动程序将JDBC转换为与DBMS有关的收集协定,以后这类协定又被某个服务器转换
为一种DBMS协定。这类收集服务器两头件可以将它的纯Java客户机毗连到多种分歧的数据库上。所用的详细协定取决于
供应者。一般,这是最为天真的JDBC驱动程序。有大概一切这类办理计划的供应者都供应合适于Intranet用的产物。为
了使这些产物也撑持Internet会见,它们必需处置Web所提出的平安性、经由过程防火墙的会见等方面的分外请求。几家提
供者正将JDBC驱动程序加到他们现有的数据库两头件产物中。
当地协定纯Java驱动程序:这类范例的驱动程序将JDBC挪用间接转换为DBMS所利用的收集协定。这将同意从客户机机
器上间接挪用DBMS服务器,是Intranet会见的一个很有用的办理办法。因为很多如许的协定都是公用的,因而数据库提
供者本人将是次要来历,有几家供应者已在动手做这件事了。
最初,我们估计第3、4类驱动程序将成为从JDBC会见数据库的首选办法。第1、2类驱动程序在间接的纯Java驱动程
序还没有上市前将会作为过渡计划来利用。对第1、2类驱动程序大概会有一些变种(下表中未列出),这些变种请求有连
接器,但一般这些是加倍不成取的办理计划。第3、4类驱动程序供应了Java的一切长处,包含主动安装(比方,经由过程使
用JDBC驱动程序的appletapplet来下载该驱动程序)。
下表显现了这4品种型的驱动程序及其属性:
驱动程序品种纯JAVA?收集协定
1-JDBC-OCBC桥非间接
2-基于当地API的非间接
3-JDBC收集的是请求毗连器
4-基于当地协定的是间接
1.2.3JDBC驱动程序的猎取
在编写本文时,已有几十个属于品种的驱动程序,便可与Javasoft桥团结利用的1:ODBC驱动程序的驱动程序。有约莫
十多个属于品种2的驱动程序是以DBMS的当地API为基本编写的。只要几个属于品种3的驱动程序。今朝最少有2个
属于品种4的驱动程序,但到1997岁尾,我们估计次要的DBMS城市有品种4的驱动程序。
要猎取关于驱动程序的最新信息,请查阅JDBC的网站,其网址为:http://java.sun.com/products/jdbc。供应第3种
驱动程序的首批供应者是SCO、OpenHorizon、Visigenic和WebLogic。JavaSoft和数据库毗连的抢先供应者Intersolv
互助研制了JDBC-ODBC桥和JDBC驱动程序测试工具包。
1.2.4别的产物
各类JDBC使用程序的开辟工具正在开辟中。请注重查阅JavaSoft网页以失掉更新信息。
手机用到的是用j2me所编出来的小程序。 |
|