sun.jdbc.odbc.jdbcodbcdriver属于JDBC中的那种类型
Class.forName(sun.jdbc.odbc.jdbcodbcdriver)和Class.forName(com.microsoft.jdbc.sqlserve...
Class.forName(sun.jdbc.odbc.jdbcodbcdriver) 和Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver)是不是都属于JDBC中的JDBC本地驱动方式?还是属于JDBC-ODBC桥接方式?
JDBC本地驱动方式和JDBC-ODBC桥接方式怎么区分?(我问区分,不是问差别)
一楼二楼都没说清楚
希望达人来解答 展开
JDBC本地驱动方式和JDBC-ODBC桥接方式怎么区分?(我问区分,不是问差别)
一楼二楼都没说清楚
希望达人来解答 展开
4个回答
展开全部
Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver) JDBC本地驱动方式
Class.forName(sun.jdbc.odbc.jdbcodbcdriver) JDBC-ODBC桥接方式
[size=xx-large][size=x-large]1.JDBC有几种驱动类型:
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型驱动则适合那些连接单一数据库的工作组应用.
Class.forName(sun.jdbc.odbc.jdbcodbcdriver) JDBC-ODBC桥接方式
[size=xx-large][size=x-large]1.JDBC有几种驱动类型:
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型驱动则适合那些连接单一数据库的工作组应用.
展开全部
odbc
是windows机器的上用的
java之所以卡平台处理是他还有jdbc
比如你的app发布在了unix或者Linux下那么odbc连接就不能用了。只能用jdbc。
最简单区分就是你class。forname时驱动不同。
odbc驱动字符串是sun.jdbc.odbc.JdbcOdbcDriver
jdbc驱动字符串是com.microsoft.jdbc.sqlserver.SQLServerDriver
连接字符串也有不同。。这里就不说了。。
是windows机器的上用的
java之所以卡平台处理是他还有jdbc
比如你的app发布在了unix或者Linux下那么odbc连接就不能用了。只能用jdbc。
最简单区分就是你class。forname时驱动不同。
odbc驱动字符串是sun.jdbc.odbc.JdbcOdbcDriver
jdbc驱动字符串是com.microsoft.jdbc.sqlserver.SQLServerDriver
连接字符串也有不同。。这里就不说了。。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你看它前面的加载项 我叫包名吧
看前面只要带ODBC就可以判断了 它就是链接一下access 了撒的
相信我 就这样判断就可以了 对了 还有微软自己开发的ODBC链接方式 不过速度不怎么样 现在估计用的人很少了 或许被ADO取代了吧
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver 你看这句 是链接SQL SERVER的驱动
还有MYSQL oracle 等等
看前面只要带ODBC就可以判断了 它就是链接一下access 了撒的
相信我 就这样判断就可以了 对了 还有微软自己开发的ODBC链接方式 不过速度不怎么样 现在估计用的人很少了 或许被ADO取代了吧
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver 你看这句 是链接SQL SERVER的驱动
还有MYSQL oracle 等等
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不用区别,JDBC-ODBC桥接方式就sun提供的这一种。
自家的数据库肯定写本地驱动,不写就被诟病;谁也不会闲着为别家的数据库的ODBC写个JDBC的桥接的。
你要是运行时想判断,直接用类名判断好了
自家的数据库肯定写本地驱动,不写就被诟病;谁也不会闲着为别家的数据库的ODBC写个JDBC的桥接的。
你要是运行时想判断,直接用类名判断好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询