最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
关于数据源连接提供者和数据源连接
时间:2022-06-30 10:37:27 编辑:袖梨 来源:一聚教程网
我是初学ASP的,深入一点后,让我困惑不已的就是数据库的连接,我经常看到对于同一个Microsoft Access数据库使用两种方式,或是三种,甚至四种方式的连接,最让我不能理解的是这两种:
<%
Set conn=Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=databasename;"
%>
<%
Set conn=Server.CreateObject("ADODB.Connection")
conn.Open "DBQ=databasename; Driver=Microsoft Access Driver (*.MDB);"
%>
为什么是这样的呢?带着这样的问题,我开始系统地来看数据源连接的问题。让我有所顿悟的是xmxoxo曾给我们的一个ADO结构图,还有便是我使用了OLE DB数据连接文件(.udl)文件来创建数据源连接。
ADO的结构图:
下面我就谈谈我对数据源连接的总的看法。
首先要肯定的是这个ADO结构图,ADO的模式是必须通过OLE DB接口来访问所有的数据源,也就是说,ADO期望所有的数据源都提供面向OLE DB接口的驱动。
可众所周知,当前我们使用的所有的数据库管理系统--DBMS实际上都可以通过 ODBC进行互访,这是因为ODBC提供了各类数据源的驱动。
然而ADO访问数据源的统一界面却是个OLE DB接口,这样一来,尽管有越来越多数据库厂商开始也提供OLE DB 接口,比如SQL Server、Oracle以及Microsoft Access(Microsoft Jet 数据库引擎)等等,但仍有一些数据源无法以这种方式提供,仍然需要借助ODBC驱动向OLE DB提供。这样的话,OLE DB便定义了一个嵌入使用ODBC驱动的接口,就象是ODBC驱动也象其他数据库驱动的提供者一样插在了OLE DB型号的插座上。给ODBC这个接口的名字(即OLE DB提供者)便是Microsoft OLE DB Provider for ODBC drivers,是ADO默认的提供者。关键字Provider的值为MSDASQL,可以省略不写,因而我们在建立数据源连接时,没看到provider的话,那说明,肯定是ODBC提供的驱动。
怎么样?困惑我很久的两个名词OLE DB和ODBC我总算是看清楚了。
实际上简单地说,这两个东东不能等同起来,因为不是一个范畴。ODBC是乐善好施的恩主,是为各种数据源提供驱动的提供者,而OLE DB根本就是个独裁者,它要所有的数据源都向它屈服,提供符合它标准的驱动。
接下来我们用实践来证明这一点,我们的ODBC的确是受控于OLE DB的。
看书上写的通常是建立数据库通常有“DSN方法及非DSN方法”,这种说法只能是针对ODBC驱动而言。对OLE DB来说只有“UDL方式”及“非UDL方式”,因为回头我们便可以看见“DSN方法及非DSN方法”,只不过是OLE DB下的“非UDL方式”。
<%
Set conn=Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=databasename;"
%>
<%
Set conn=Server.CreateObject("ADODB.Connection")
conn.Open "DBQ=databasename; Driver=Microsoft Access Driver (*.MDB);"
%>
为什么是这样的呢?带着这样的问题,我开始系统地来看数据源连接的问题。让我有所顿悟的是xmxoxo曾给我们的一个ADO结构图,还有便是我使用了OLE DB数据连接文件(.udl)文件来创建数据源连接。
ADO的结构图:
下面我就谈谈我对数据源连接的总的看法。
首先要肯定的是这个ADO结构图,ADO的模式是必须通过OLE DB接口来访问所有的数据源,也就是说,ADO期望所有的数据源都提供面向OLE DB接口的驱动。
可众所周知,当前我们使用的所有的数据库管理系统--DBMS实际上都可以通过 ODBC进行互访,这是因为ODBC提供了各类数据源的驱动。
然而ADO访问数据源的统一界面却是个OLE DB接口,这样一来,尽管有越来越多数据库厂商开始也提供OLE DB 接口,比如SQL Server、Oracle以及Microsoft Access(Microsoft Jet 数据库引擎)等等,但仍有一些数据源无法以这种方式提供,仍然需要借助ODBC驱动向OLE DB提供。这样的话,OLE DB便定义了一个嵌入使用ODBC驱动的接口,就象是ODBC驱动也象其他数据库驱动的提供者一样插在了OLE DB型号的插座上。给ODBC这个接口的名字(即OLE DB提供者)便是Microsoft OLE DB Provider for ODBC drivers,是ADO默认的提供者。关键字Provider的值为MSDASQL,可以省略不写,因而我们在建立数据源连接时,没看到provider的话,那说明,肯定是ODBC提供的驱动。
怎么样?困惑我很久的两个名词OLE DB和ODBC我总算是看清楚了。
实际上简单地说,这两个东东不能等同起来,因为不是一个范畴。ODBC是乐善好施的恩主,是为各种数据源提供驱动的提供者,而OLE DB根本就是个独裁者,它要所有的数据源都向它屈服,提供符合它标准的驱动。
接下来我们用实践来证明这一点,我们的ODBC的确是受控于OLE DB的。
看书上写的通常是建立数据库通常有“DSN方法及非DSN方法”,这种说法只能是针对ODBC驱动而言。对OLE DB来说只有“UDL方式”及“非UDL方式”,因为回头我们便可以看见“DSN方法及非DSN方法”,只不过是OLE DB下的“非UDL方式”。
相关文章
- 以下哪种非遗技艺是用针在纸上绣画 蚂蚁新村11月21日答案 11-22
- 江南百景图听风塔怎么样 11-22
- 原神恰斯卡圣遗物怎么搭配 11-22
- 2024年霸王茶姬11月22日口令是什么 2024.11.22霸王茶姬口令介绍 11-22
- 光遇11.21季节蜡烛在哪里 光遇11月21日季节蜡烛位置攻略 11-22
- 光遇11.21大蜡烛在哪里 光遇11月21日大蜡烛位置攻略 11-22