惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
L
LangChain Blog
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
M
MIT News - Artificial intelligence
IT之家
IT之家
The Register - Security
The Register - Security
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
The GitHub Blog
The GitHub Blog
博客园 - 聂微东
云风的 BLOG
云风的 BLOG
Microsoft Security Blog
Microsoft Security Blog
腾讯CDC
W
WeLiveSecurity
博客园_首页
A
About on SuperTechFans
G
Google Developers Blog
博客园 - 叶小钗
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
量子位
Google DeepMind News
Google DeepMind News
博客园 - 【当耐特】
aimingoo的专栏
aimingoo的专栏
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 三生石上(FineUI控件)
N
News | PayPal Newsroom
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
AI
AI
TaoSecurity Blog
TaoSecurity Blog
P
Proofpoint News Feed
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 司徒正美
www.infosecurity-magazine.com
www.infosecurity-magazine.com
J
Java Code Geeks
Hacker News - Newest:
Hacker News - Newest: "LLM"
爱范儿
爱范儿
S
SegmentFault 最新的问题
Martin Fowler
Martin Fowler
Vercel News
Vercel News
Schneier on Security
Schneier on Security
Know Your Adversary
Know Your Adversary
H
Heimdal Security Blog
N
News and Events Feed by Topic

博客园 - K.

ASP.NET 和 IIS 配置自定义扩展名网页 - K. 网页设计必须注意的29个问题 Web 2.0网站流行使用的颜色元素 动漫中心展 Internet Explorer 8 Beta1提供中文版下载 Atlas:微软的Ajax 什么是AJAX? 马云致天下所有创业者(转) Visual C#中使用线程 计科系的网页设计大赛 asp.net常见面试题 asp.net学习之:什么是ADO.NET C#中ArrayList.CopyTo()运行错误的解决方法 大学毕业了再看这个你会后悔一辈子 常用的正则表达式 web.config文件的配置<转载> 算术表达式的计算(C#) 学习asp.net比较完整的流程 开始做自己的学生管理系统-StudentSystem V1.0
OLEDB是什么玩艺儿?
K. · 2008-04-18 · via 博客园 - K.

OLEDB? 这是什么什么玩艺儿? 也许你们中的许多人以前没有听说过. 要回答这个问题,我们先得回顾一下数据库连接的历史. 是英文(object linking and embedding database)的缩写;

早期的数据库连接是非常困难的. 每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层API有深刻的了解. 因此,能处理各种各样数据库的通用的API就应运而生了. 也就是现在的ODBC(Open Database Connectivity), ODBC是人们在创建通用API的早期产物. 有许多种数据库遵从了这种标准,被称为ODBC兼容的数据库.
ODBC兼容的数据库包括Access, MS-SQL Server, Oracle, Informix等.

但ODBC并不是完美无缺的,它仍然含有大量的低级的调用,开发ODBC应用程序仍较困难. 开发者不得不将大量的精力花在底层的数据库通信中,而不能专注于他们所要处理的数据. 后来微软提出了一个解决方案: DAO(Data Access Objects). DAO的代码看起来象这样:

objItem.AddNew
objItem.Name = Chair
objItem.Price = 10
objItem.Update

你也许看过DAO的代码. 后来DAO演变为RDO(Remote Data Objects, 为分布式数据库体系设计), 再后来是ADO. 尽管它们都有各自的不足之处. 根据微软的说法,ODBC提供了本地SQL数据的存取,DAO提供了高级的数据对象. DAO和RDO都需要数据以SQL(Structured Query Language)的格式存储. 针对这些缺陷,微软提出了OLEDB,一个基于COM的数据存储对象,能提供对所有类型的数据的操作,甚至能在离线的情况下存取数据(比方说,你使用的是你的便携机,你可以毫不费力地看到最后一次数据同步时的数据映像).

OLEDB位于ODBC层与应用程序之间. 在你的ASP页面里,ADO是位于OLEDB之上的应用程序. 你的ADO调用先被送到OLEDB,然后再交由ODBC处理. 你可以直接连接到OLEDB层,如果你这么做了,你将看到服务器端游标(recordset的缺省的游标,也是最常用的游标)性能的提升. 那我们该如何直接连接到OLEDB呢?

要想直接连到OLEDB层,你必须改变你的connection对象连接字符串. 先用老办法创建一个connectiong对象:

Dim objConn
Set objConn = Server.CreateObject(ADODB.Connection)

接下去,我们不用常规的类似DSN=pubs or DRIVER={MS SQL-
Server};UID=sa;PWD=;DATABASE=pubs;SERVER=myMachine的连接字符串,而采用下面的连接字符串:

objConn.ConnectionString = Provider=ProviderName; Data
Source=DatabaseSource; Initial Catalog=DatabaseName; User ID=UserID;
Password=Password

对于SQL:
ProviderName = SQLOLEDB
Data Source = Server Name
Initial Catalog = Database Name

对于Access:
ProviderName = Microsoft.Jet.OLEDB.3.51
Data Source = Full path to .MDB file

下面让我们来看两个例子,一个是针对Access的,还有一个是针对SQL的. 如果你的连接SQL的DSN-less连接串是这样的:

DRIVER={MS SQL-Server};UID=sa;PWD=;DATABASE=pubs;SERVER=myMachine

那么直接连接到OLEDB的连接字符串应该是这样的:

Provider=SQLOLEDB; Data Source=myMachine; Initial Catalog=pubs; User
ID=sa; Password=

让我们来看看Access,如果你的Access的连接字符串是:

DRIVER={Microsoft Access Driver (*.mdb)};
DBQ=c:\inetpub\wwwroot\users.mdb

那么直接连接到OLEDB的连接字符串应该是这样的:

Provider=Microsoft.Jet.OLEDB.3.51; Data
Source=c:\inetpub\wwwroot\users.mdb

就是这么简单,挺棒的吧?

这很重要吗?
现在你也许对为什么要学习这种新的数据库连接方法感到有些儿迷惑,为什么不走标准的DSN-less/System DSN路子呢? 让我来告诉你为什么. 据Wrox出的ADO 2.0
Programmer's Reference一书中的测试,用OLEDB连接而不是DSN或DSN-less的连接会得到的性能提升如下:

性能比较
SQL Access
OLEDB DSN                                                                     OLEDB DSN
Connection Times: 18 82                                                 Connection Times: 62 99
Iterating through 1,000 Records Times: 2900 5400   Iterating through 1,000 Records Times: 100 950  

源地址: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1477560