• Asp中的MSSQL数据库访问:driver={SQL Server};与Provider = Sqloledb;的区别


       打工作开始(2004年下半年),Asp能见到的两个数据库连接就是driver={SQL Server};或者Provider = Sqloledb;,它们都是用来连接MSSQL数据库的,一直没搞清楚它们的区别,反正程序中数据访问出问题,在排除一些常规因素后,把driver={SQL Server} 改成 Provider=SQLOLEDB 问题就奇迹般的解决了(也有可能是把后者改成前者,不过记忆里好象找不到). 有了ADO.NET更是很少再因为连接字符串问题而伤脑了,维护.net1.0跟.net2.0在数据库连接上(MSSQL)根本没什么区别.

    不过最近碰到了一个asp程序(即使在今天,2009年)asp做的网站还是很普遍的, 原来系统采用的是ODBC提供程序(注意ODBC提供程序其本质是一个OLEDB,ODBC驱动跟ODBC提供程序是两个不同的概念),但是奇怪的是这个东西放到服务器上几乎远行不了,折腾半天后只能将ODBC提供改成SqloleDB提供,问题居然解决了.

     今天又分别测试了下这两个不同的连接,居然都又可以正常使用,迷惑中了....

     下面是关于ADO,OLEDB,sqlOledb,ODBC的一些说明,是这两天收集到的资料:
     
    ======================================= 

    史前
        那时候每个数据库供应商(其实也没几个)
        都有自己的数据库操作API,
        每个应用程序只能使用一个固定的数据库
        想换数据库?没门!你要全部重新写
    后来
        X/OPEN和ISO(好像还有IBM)说
            KAO,这么乱,程序员怎么活啊
        于是提出了CLI(Call-Level Interface)
        每个数据库的CLI(驱动程序)基本上相同,
        程序员总算好过点了,可是要换数据库,
        你写的程序需要重新编译(或许还要安装)
    再后来
        于是ODBC来了,它通过动态装载各个数据库的CLI
        把函数调用转换成每个数据库的CLI调用
        数据库应用程序总算和数据库供应商每什么关系了
    再后来
        MS提出了OLE,MS还有了自己的数据库
        (Access/SQL Server)
        MS是老大,这个问题上当然要有自己的看法
        要是还只是提供ODBC,那多没面子
        所以提出了 OleDb,它通过COM接口调用
        OleDb也需要每个数据库提供一个CLI
        (不过有了新名词,叫作Provider)
        MS 给 Access和SqlServer分别写了一个Provider
        不过为了照顾使用ODBC的,也提供了一个ODBC的Provider
        这样那些只提供ODBC的数据库也可以通过OleDb访问
        不过这样效率就稍微低了(因为要经过两层么)
        所以现在有些数据库会提供自己的Provider
    再后来
        MS说OleDb的接口太复杂了
        程序员也就调调query
        没必要搞这么复杂吧
        于是提出了ADO,ADO 通过在OleDb上面封装
        简化了使用方法,程序员在操作数据库上总算是解放了
    新世纪终于到来了
        MS也发明了.NET,为了适应新世纪新潮流
        也提出了 ADO.NET
    =====================================
     

     可以看到,如果是ASP程序那基本上你用的就是ADO了,而ADO使用的就是OLEDB,你无法在VB,或asp中直接使用OLEDB,跟ODBC, 即使在C,C++中访问数据库的最好选择也是ADO,而不是直接操作,OleDB或ODBC, 既然我们使用的是Asp,而Asp中只能用ADO,那么ODBC的连接是什么呢?  在Asp中说的ODBC,其实指ODBC提供程序,其本质是一个OLEDB provider,通过这个provider我们访问数据库提供的ODBC接口(驱动),而ODBC接口再操作数据库. 这样跟直接使用sqlOLEDB相比其实是多了一层出来,看下图:

    到这里,其实想说明的是,在ASP中我们说到ODBC其实指ODBC提供程序,更准确的说是,MS提供的ODBC提供程序.

  • 相关阅读:
    再战CS231-数组的访问
    win10定时关机
    再战CS231-快速排序
    数据库权限
    numpy
    anaconda
    控件的相对位置与绝对位置-UI界面编辑器(SkinStudio)教程
    共用字体-UI界面编辑器(SkinStudio)教程
    添加图片按钮-UI界面编辑器(SkinStudio)教程
    为窗体设置背景图片-UI界面编辑器(SkinStudio)教程
  • 原文地址:https://www.cnblogs.com/wdfrog/p/1430941.html
Copyright © 2020-2023  润新知