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","");
请详细讲解一下桥连和直连除了驱动程序外有什么重要区别?
比如性能、稳定性、安全性方面。是否桥连是没有相应数据库驱动程序包时选择的“下策”。

解决方案 »

  1.   

    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   
      

  2.   

    写的很好,就是有点多一时看不太懂啊。
    我按我理解告诉你吧,
    1.JDBC-ODBC Bridge  
    优点:支持几呼所有的数据库,因为实际上还是通过ODBC在连接
    缺点:不能跨平台。换到linux就费了。
    4.本机协议/全Java  
    优点:采用纯java编写,可以跨平台。
    缺点:支持的数据库少一些。
      

  3.   

    我认为的区别:
    1、桥连
    优点:通用,只要直至ODBC的都可以,即使更换了数据库种类,只要表结构相同,代码不需要修改
    确定:速度慢,应为经过了ODBC中转,只能使用标准的SQL,不能使用T-SQL或P-SQL
    2、直连
    优点:速度优化,可以使用厂商对于标准SQL的扩展
    确定:专用,有些数据库没有直连的JAVA实现
      

  4.   

    这年代,用直连多方便啊,跨平台,ODBC需要在操作系统里配,很麻烦哪啊
    http://www.10zhizui.cn
      

  5.   

    如果用odbc桥,那么同一个Connection无法同时打开多个Statement或者PreparedStatement,当需要同时使用多个结果集的时候就必须使用多个数据库联接,浪费资源,而且多个数据库联接之间也无法使用事务。用jdbc直接联接,url指定为dbc:microsoft:sqlserver://localhost:1433;SelectMethod=cursor;DatabaseName=Northwind,就可以实现一个Connection打开多个Statement和PreparedStatement