关于四种JDBC驱动类型的区别

Type1     JDBC-ODBC桥   
  作为JDK1.1后的一部分,是sun.jdbc.odbc包的一部分   
  Application--->JDBC-ODBC     Bridge(Type1     jdbc     driver)---->JDBC-ODBC     Library--->ODBC     Driver-->Database   
  适用于快速的原型系统,没有提供JDBC驱动的数据库如Access   
   
  Type2     JAVA     to     Native     API   
  利用开发商提供的本地库来直接与数据库通信。   
  Application--->JDBC     Driver(Type2     jdbc     driver)---->Native     Database     library---->Database   
  比Type1性能略好。   
   
  Type3     Java     to     net   
  Application--->Jdbc     Driver(Type3     jdbc     driver)----->java     middleware--->JDBC     Driver---->Database   
  具有最大的灵活性,通常由那些非数据库厂商提供,是四种类型中最小的。   
   
  Type4     JAVA     to     native     dababase   
  Application--->Jdbc     driver(type4     jdbc     driver)----->database     engine--->database   
  最高的性能,通过自己的本地协议直接与数据库引擎通信,具备在Internet装配的能力。
关于jdbc的1,2,3,4.     
  作者:bluewind     
   
  题目中所说的/"1,2,3,4/"   实际上是指jdbc驱动的四种类型.本文将对jdbc   driver   的四种类型以及不同类型的driver适合于哪种层次的应用做一个简单介绍,   如果你现在正准备开发有关数据库的java应用,你也许会需要从网上下载相关数据库的jdbc   driver   .在下载网页上你可能会发现这样的说明/"this   is   a   type   4   drvier/"或this   is   type   3   driver那     
  么到底应该下载哪一个,下载后的driver是否适合我们要开发的应用呢?还是让我们先解释   一下这四种类型的具体含义吧。     
  type   1:jdbc-odbc桥     
  type   2:本地api驱动     
  type   3:网络协议驱动     
  type   4:本地协议驱动     
   
  Type   1:   jdbc-odbc桥     
  Jdbc-odbc   桥   是sun公司提供的,是jdk提供的的标准api.   这种类型的驱动实际是把所有     
  jdbc的调用传递给odbc   ,再由odbc调用本地数据库驱动代码.(   本地数据库驱动代码是指     
  由数据库厂商提供的数据库操作二进制代码库,例如在oracle   for   windows中就是oci   dll   文     
  件)     
   
  jdbc-odbc桥     
  |     
  odbc     
  |     
  厂商DB代码---------------数据库Server     
   
  (图一)     
   
  只要本地机装有相关的odbc驱动那么采用jdbc-odbc桥几乎可以访问所有的数据库,jdbc-     
  odbc方法对于客户端已经具备odbc   driver的应用还是可行的.但是,由于jdbc-odbc先调用     
  odbc再由odbc去调用本地数据库接口访问数据库.所以,执行效率比较低,对于那些大数据量     
  存取的应用是不适合的.而且,这种方法要求客户端必须安装odbc   驱动,所以对于基于     
  internet   ,intranet的应用也是不合适的.因为,你不可能要求所有客户都能找到odbc   driver.     
   
  Type   2:   本地Api驱动     
  本地api驱动直接把jdbc调用转变为数据库的标准调用再去访问数据库.这种方法需要本地     
  数据库驱动代码.     
   
  本地api驱动     
  |     
  厂商DB代码---------------数据库Server     
   
  (图二)     
  这种驱动比起jdbc-odbc桥执行效率大大提高了.但是,它仍然需要在客户端加载数据库厂商     
  提供的代码库.这样就不适合基于internet的应用.并且,他的执行效率比起3,4型的jdbc驱动     
  还是不够高.     
   
  Type3:网络协议驱动     
  这种驱动实际上是根据我们熟悉的三层结构建立的.   jdbc先把对数局库的访问请求传递给网     
  络上的中间件服务器.   中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用     
  传给数据库服务器.如果中间件服务器也是用java开法的,那么在在中间层也可以使用1,2型     
  jdbc驱动程序作为访问数据库的方法.     
   
  网络协议驱动---------中间件服务器------------数据库Server     
  (   图三)     
   
  由于这种驱动是基于server的.所以,它不需要在客户端加载数据库厂商提供的代码库.而且     
  他在执行效率和可升级性方面是比较好的.因为大部分功能实现都在server端,所以这种驱动     
  可以设计的很小,可以非常快速的加载到内存中.   但是,这种驱动在中间件层仍然需要有配置     
  其它数据库驱动程序,并且由于多了一个中间层传递数据,它的执行效率还不是最好.     
   
   
  Type4   本地协议驱动     
  这种驱动直接把jdbc调用转换为符合相关数据库系统规范的请求.由于4型驱动写的应用可     
  以直接和数据库服务器通讯.这种类型的驱动完全由java实现,因此实现了平台独立性.     
   
  本地协议驱动---------数据库Server     
  (   图四)     
   
  由于这种驱动不需要先把jdbc的调用传给odbc或本地数据库接口或者是中间层服务器.所     
  以它的执行效率是非常高的.而且,它根本不需要在客户端或服务器端装载任何的软件或驱动.     
  这种驱动程序可以动态的被下载.但是对于不同的数据库需要下载不同的驱动程序.     
   
   
  以上对四种类型的jdbc驱动做了一个说明.那么它们适合那种类型的应用开发呢?     
  Jdbc-odbc桥由于它的执行效率不高,更适合做为开发应用时的一种过度方案,或着对于初学     
  者了解jdbc编程也较适用.     
  对于那些需要大数据量操作的应用程序则应该考虑2,3,4型驱动.在intranet方面的应用可以     
  考虑2型驱动,但是由于3,4型驱动在执行效率上比2型驱动有着明显的优势,而且目前开发     
  的趋势是使用纯java.所以3,4型驱动也可以作为考虑对象.     
  至于基于internet方面的应用就只有考虑3,4型驱动了.   因为3型驱动可以把多种数据库驱     
  动都配置在中间层服务器.所以3型驱动最适合那种需要同时连接多个不同种类的数据库,     
  并且对并发连接要求高的应用.   4型驱动则适合那些连接单一数据库的工作组应用.     
   
  说了这么多,那么相关的jdbc驱动应该在哪里下载呢?实际上各大数据库厂商     
  (oracle,sybase,db2)对jdbc多都有很好的支持(微软例外).你可以到他们的官方站点去下载.     
  由于微软一直没有开发sqlserver的jdbc驱动,所以只好用其他厂商提供的驱动.这里向大家     
  推荐几个站点     
  http://www.idssoftware.com/jdbcdrv.html   (3型)     
  http://www.jturbo.com/   (4型)     
  http://www.inetsoftware.de/(4型)     
  特别推荐I-net   Sprinta   2000   的sqlserver驱动,因为他的驱动只有47K没有时间限制,并且是4     
  型驱动.     
   
  对于在编程时如何用JDBC建立连接,本文就不做详细介绍了.读者可以在jdk中找到例子,目     
  录为jdk/demo/jfc/dbdemos.   如果你下载其他厂商的驱动程序在压缩文件中会有例子.     
  如果你在applet中调用jdbc驱动访问数据库一定要注意web   server和   数据库   server一定     
  要在同一台机器.这是java   applet   安全规范所要求的.  
第一种方式:通过数据库本身的JDBC   Driver连接到数据库     
   
  Classs.forName("oracle.jdbc.driver.OracleDriver");     
   
  Connection   conn   =   DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.33:1521:huihoo","scott","tiger");     
   
  第二种方式:通过JDBC-ODBC桥连接到数据库     
   
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");     
   
  Connection   conn   =   DriverManager.getConnection("jdbc:odbc:192.168.1.33","scott","tiger");     
   
  192.168.1.33为数据源     
   
  完整的用户登录     
   
  Properties   props   =   new   Properties();     
   
  props.put("user",   "scott");     
   
  props.put("password",   "tiger");     
   
  Driver   myDriver   =   (Driver)   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();     
   
  conn   =   myDriver.connect("jdbc:oracle:thin:@192.168.1.33:1521:huihoo",   props);     
   
  conn.close();     
   
  System.out.println("成功登录.");     
   
  System.out.println("欢迎您   "+props.getProperty("user")+"!");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值