您的位置:程序门 -> java ->



jdbc连接sql server 2000时桥连和直连有什么区别


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


jdbc连接sql server 2000时桥连和直连有什么区别[已结贴,结贴人:jonathonc]
发表于:2007-11-14 09:37:00 楼主
class.forname("sun.jdbc.odbc.jdbcodbcdriver");
connection   cn=drivermanager.getconnection("jdbc:odbc:javatest","sa","");

class.forname("com.microsoft.jdbc.sqlserver.sqlserverdriver");
connection   cn=drivermanager.getconnection("jdbc:microsoft:sqlserver://localhost:1433;   databasename=northwind","sa","");
请详细讲解一下桥连和直连除了驱动程序外有什么重要区别?
比如性能、稳定性、安全性方面。是否桥连是没有相应数据库驱动程序包时选择的“下策”。
发表于:2007-11-14 15:20:291楼 得分:5
odbc(open       database       connectivity       :       开放数据库连接)      
       
       
    odbc       总体结构      
    应用程序          
    执行处理并调用odbc函数,提交sql语句并检索结果      
       
    driver       manager      
    管理应用程序和驱动程序之间的通讯,根据应用程序加载并卸载驱动程序,      
    处理odbc函数调用,获把它们传送到驱动程序      
       
    驱动程序                  
    处理odbc函数调用,把sql语句提交到数据源,并返回结果到应用程序,如有必要,      
    驱动程序修改一个应用程序请求,以使请求与相关的dbms支持的语法一致      
       
    数据源              
    用户要访问的dbms,以及相关os      
       
                                    application      
                                                    ¦      
                                                    ¦          
                            driver       manager      
                ¦                                       ¦                                       ¦      
                ¦                                       ¦                                       ¦      
    驱动程序           驱动程序           驱动程序      
                ¦                                       ¦                                       ¦      
    数据源                   数据源                   数据源      
       
       
       
    结合现实的高层开发工作流程如下:      
    1.数据应用系统首先获得在odbc数据源管理器中建立的dsn(存储了与数据提供程序连接的详细信息包含数据库位置、数据库类型及相应的odbc驱动程序等),然后       driver       manager依赖一种叫做数据库独立的交流(database       indepedent       communications       technology)的技术与数据源建立联系(其中涉及客户端和服务器端多种agent对象的问题,详情不叙,可参见下图).      
       
           
    2.driver       mangaer调用特定odbc驱动程序将odbc标准api转化为适用于具体数据库系统的函数调用(数据库特征不同之处也在这里翻译如sql语法差异等),然后经由客户端的request       agent发送到数据源.      
    3.数据源database       agent处理操作,将结果返回到客户端的request       agent,再向上经driver(这里会有翻译和标准化错误码的行为)、driver       mangaer返回给application.          
       
                需要说明的是定义和操作光标、维护事务、负责任何与访问数据源的必要软件层进行交互(包括与底层网络或文件系统接口的软件)等行为亦由驱动程序完成.      
               
                结合odbc       api调用顺序描叙工作流程:初始化(分配环境---> 分配连接句柄---> 与服务器连接---> 分配语句句柄)--------> sql处理(语句处理和检索部分)--------> 终止(释放语句句柄---> 与服务器断开---> 释放连接句柄---> 释放环境).      
jdbc(java       database       connectivity       :       java数据库连接)      
       
       
       
       
        jdbc设计很多借鉴于odbc:      
                                                    1.jdbc与odbc都是基于x/open的sql调用级接口      
                                                    2.jdbc很多设计思想沿袭了odbc,包括许多抽象和sql       cli实现      
                                                    3.jdbc的总体结构类似于odbc,有四个组件:应用程序、驱动程序管理器、驱动程序和数据源,工作原       理亦大体同于odbc.      
       
    1.jdbc保持了odbc的基本特性,也独立于特定数据库.      
    2.使用相同源代码的应用程序通过动态加载不同的jdbc驱动程序,可以访问不同的dbms.连接不同的       dbms时,各个dbms之间仅通过不同的url进行标识.      
    3.jdbc的databasemetadata接口提供了一系列方法,可以检查dbms对特定特性的支持,并相应确定有什       么特性,从而能对特定数据库的特性予以支持      
    4.jdbc也支持在应用程序中同时建立多个数据库连接,采用jdbc可以很容易地用sql语句同时访问多个       异构的数据库,为异构的数据库之间的互操作奠定基础      
       
    java的驱动解决方案有四种:1.jdbc-odbc       bridge       2.本机api/集团式java驱动程序           3.网络协议/全java           4.本机协议/全java      
发表于:2007-11-14 15:24:212楼 得分:0
该回复于2007-11-15 13:25:39被管理员删除
发表于:2007-11-14 20:07:443楼 得分:1
明白了
原来是这样个理
发表于:2007-11-14 21:01:504楼 得分:4
写的很好,就是有点多一时看不太懂啊。
我按我理解告诉你吧,
1.jdbc-odbc   bridge    
优点:支持几呼所有的数据库,因为实际上还是通过odbc在连接
缺点:不能跨平台。换到linux就费了。
4.本机协议/全java    
优点:采用纯java编写,可以跨平台。
缺点:支持的数据库少一些。
发表于:2007-11-15 11:47:185楼 得分:0
性能上直连会不会比桥连效率高些呢?
发表于:2007-11-15 21:03:376楼 得分:5
我认为的区别:
1、桥连
优点:通用,只要直至odbc的都可以,即使更换了数据库种类,只要表结构相同,代码不需要修改
确定:速度慢,应为经过了odbc中转,只能使用标准的sql,不能使用t-sql或p-sql
2、直连
优点:速度优化,可以使用厂商对于标准sql的扩展
确定:专用,有些数据库没有直连的java实现
发表于:2007-11-15 23:41:517楼 得分:2
这年代,用直连多方便啊,跨平台,odbc需要在操作系统里配,很麻烦哪啊
发表于:2007-11-15 23:51:148楼 得分:3
如果用odbc桥,那么同一个connection无法同时打开多个statement或者preparedstatement,当需要同时使用多个结果集的时候就必须使用多个数据库联接,浪费资源,而且多个数据库联接之间也无法使用事务。

用jdbc直接联接,url指定为dbc:microsoft:sqlserver://localhost:1433;selectmethod=cursor;databasename=northwind,就可以实现一个connection打开多个statement和preparedstatement


快速检索

最新资讯
热门点击