📄 mdrefodbcprovspec.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML dir=ltr>
<HEAD>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=gb2312"><title>Microsoft OLE DB Provider for ODBC</title>
<style>@import url(msdn_ie4.css);</style>
</HEAD>
<BODY>
<h1><a name="mdrefodbcprovspec"></a>Microsoft OLE DB Provider for ODBC</h1>
<p><a href="dir.htm">目录</a></p>
<p>
对于 ADO 或 RDS 的程序员来说,理想的环境是每个数据源都具有一个 OLE DB 接口,以便 ADO 可以直接调用该数据源。虽然越来越多数据库厂商提供 OLE DB 接口,但某些数据源仍无法以这种方式提供。然而,当前使用的所有 DBMS 系统实际上都可以通过 ODBC 进行访问。</p>
<p>
Microsoft® ODBC Provider 允许 ADO 连接到任何 ODBC 的数据源。ODBC 驱动程序对于当今使用的各种主要 DBMS 都有效,包括 Microsoft® SQL Server®、Microsoft Access(Microsoft Jet 数据库引擎)和 Microsoft FoxPro® 以及诸如 Oracle 等非 Microsoft 数据库产品。提供者将不受线程控制并允许使用 unicode。</p>
<p>
提供者将支持事务,尽管不同的 DBMS 引擎提供不同类型的事务支持。例如,Microsoft Access 支持五级或五级以下的嵌套事务。</p>
<p>
该提供者是 ADO 的默认提供者,当与 Microsoft SQL Server 6.5 一起使用时,除 ADO 语言手册主题中注释之外,所有依赖于提供者的 ADO 属性和方法都受到支持。</p>
<p>
<b>连接字符串参数</b></p>
<p class=label>
</p>
<p>
要连接该提供者,将(<b>ConnectionString</b> 属性的参数)“<b>Provider</b>=”设置为:</p>
<pre>MSDASQL
</pre>
<p>
读取 <b>Provider</b> 属性也将返回该字符串。</p>
<p>
由于这是 ADO 的默认提供者,所以如果省略连接字符串的 <b>Provider</b>= 参数,ADO 将试图建立与该提供者的连接。</p>
<p>
除了 ADO 所定义的参数外,提供者不支持任何特定连接参数。但是,提供者将把任何非 ADO 连接参数传递给 ODBC 驱动程序管理器。</p>
<p>
由于可以省略 Provider 参数,因此使用与撰写 ODBC 连接字符串时用的相同参数名(DRIVER=、DATABASE=、DSN= 等等)、值和语法,可以撰写与同一数据源的 ODBC 连接字符串相同的 ADO 连接字符串。可以使用或不使用预定义的数据源名 (DSN) 或 FileDSN 进行连接。</p>
<p>
带有 DSN 或 FileDSN 的语法:</p>
<p>
<b>"</b>[<b>Provider=MSDASQL;</b>] { <b>DSN=</b><i>name</i> | <b>FileDSN=</b><i>filename</i> } <b>;</b> [<b>DATABASE=</b><i>database</i><b>;</b>] <b>UID=</b><i>user</i><b>;</b> <b>PWD=</b><i>password</i><b>"</b></p>
<p>
无 DSN(非 DSN 连接)的语法:</p>
<p>
<b>"</b>[<b>Provider=MSDASQL;</b>] <b>DRIVER=</b><i>driver</i><b>;</b> <b>SERVER=</b><i>server</i><b>;</b> <b>DATABASE=</b><i>database</i><b>;</b> <b>UID=</b><i>user</i><b>;</b> <b>PWD=</b><i>password</i><b>"</b></p>
<p>
如果使用<b> DSN</b> 或 <b>FileDSN</b>,则必须通过“Windows 控制面板”中的“ODBC 管理器”进行定义。作为设置 <b>DSN</b> 的替换方法,可以指定 ODBC 的驱动程序 (<b>DRIVER=</b>),诸如“SQLServer”、服务器名 (<b>SERVER=</b>) 和数据库名 (<b>DATABASE=</b>)。</p>
<p>
也可以在特定 ODBC 的参数或标准 ADO 定义的 <b>User ID</b> 和 <b>Password</b> 参数中为用户帐号 (<b>PWD=</b>) 指定用户帐号名 (<b>UID=</b>) 和密码。如果这些值中同时包括了 ADO 和特定 ODBC 的参数,则 ADO 参数优先。</p>
<p>
即使<b> DSN</b> 定义已经指定了数据库,也可以在 <b>DSN </b>之外指定 <b>DATABASE</b> 参数以便连接到不同的数据库。这同时更改了 <b>DSN</b> 定义以包括指定的数据库。使用 <b>DSN</b> 时始终包括 <b>DATABASE </b>参数是一种好办法。这样将保证能连接到正确的数据库,因为其他用户可能会在上一次检查 <b>DSN</b> 定义后更改默认的数据库参数。</p>
<p>
<b>Command 文本</b></p>
<p>
如何使用 <b>Command</b> 对象很大程度上取决于数据源和它所接受的查询类型或命令语句。</p>
<p>
ODBC 对于调用存储的过程提供特定的语法。对于 <b>Command</b> 对象的 <b>CommandText</b> 属性、<b>Connection</b> 对象上 <b>Execute</b> 方法的 <b>CommandText</b> 参数、或 <b>Recordset</b> 对象上 <b>Open</b> 方法的 <b>Source</b> 参数,请传递下列语法的字符串:</p>
<p>
<b>"{</b> [ <b>? = </b>] <b>call</b> <i>procedure</i> [ <b>(</b> <b>?</b> [<b>, ? </b>[ <b>,</b> _ ]] <b>)</b> ] <b>}"</b></p>
<p>
此处每个 <b>? </b>引用 <b>Parameters </b>集合中的一个对象。第一个 <b>?</b> 引用 <b>Parameters</b>(0),下一个 <b>?</b> 引用 <b>Parameters</b>(1),依次类推。</p>
<p>
参数引用是可选的并取决于存储过程的结构。如果要调用未定义参数的存储过程,则字符串如下:</p>
<p>
<b>"{</b> <b>call </b><i>procedure</i><b> }"</b></p>
<p>
如果有两个查询参数,则字符串如下:</p>
<p>
<b>"{ call </b><i>procedure</i><b> ( ?, ? ) }"</b></p>
<p>
如果存储过程要返回一个值,返回值将被作为另一个参数来对待。如果无查询参数而有返回值,则字符串如下:</p>
<p>
<b>"{ ? = call </b><i>procedure</i><b> }"</b></p>
<p>
最后,如果有返回值和两个查询参数,则字符串如下:</p>
<p>
<b>"{ ? = call</b> <i>procedure</i> <b>( ?, ? ) }"</b></p>
<p>
<b>Recordset 行为</b></p>
<p class=label>
</p>
<p>
下表列出了由该提供者打开的 <b>Recordset</b> 对象上可用的标准 ADO 方法和属性。</p>
<p>
要获得有关提供者配置的 <b>Recordset</b> 行为的详细信息,请运行 <b>Supports</b> 方法并枚举 <b>Recordset</b> 的<b> Properties</b> 集合以确定特定提供者的动态属性是否存在。</p>
<p>
标准 ADO<b> Recordset</b> 属性的可用性:</p>
<table border=1 cellpadding=5 cols=5 frame=below rules=rows>
<tr valign=top>
<td class=label width=26%><b>属性</b></td>
<td class=label width=21%><b>仅向前</b></td>
<td class=label width=20%><b>动态</b></td>
<td class=label width=16%><b>键集</b></td>
<td class=label width=17%><b>静态</b></td>
</tr>
<tr valign=top>
<td width=26%><b>AbsolutePage</b></td>
<td width=21%>不可用</td>
<td width=20%>不可用</td>
<td width=16%>读/写</td>
<td width=17%>读/写</td>
</tr>
<tr valign=top>
<td width=26%><b>AbsolutePosition</b></td>
<td width=21%>不可用</td>
<td width=20%>不可用</td>
<td width=16%>读/写</td>
<td width=17%>读/写</td>
</tr>
<tr valign=top>
<td width=26%><b>ActiveConnection</b></td>
<td width=21%>读/写</td>
<td width=20%>读/写</td>
<td width=16%>读/写</td>
<td width=17%>读/写</td>
</tr>
<tr valign=top>
<td width=26%><b>BOF</b></td>
<td width=21%>只读</td>
<td width=20%>只读</td>
<td width=16%>只读</td>
<td width=17%>只读</td>
</tr>
<tr valign=top>
<td width=26%><b>Bookmark</b></td>
<td width=21%>不可用</td>
<td width=20%>不可用</td>
<td width=16%>读/写</td>
<td width=17%>读/写</td>
</tr>
<tr valign=top>
<td width=26%><b>CacheSize</b></td>
<td width=21%>读/写</td>
<td width=20%>读/写</td>
<td width=16%>读/写</td>
<td width=17%>读/写</td>
</tr>
<tr valign=top>
<td width=26%><b>CursorLocation</b></td>
<td width=21%>读/写</td>
<td width=20%>读/写</td>
<td width=16%>读/写</td>
<td width=17%>读/写</td>
</tr>
<tr valign=top>
<td width=26%><b>CursorType</b></td>
<td width=21%>读/写</td>
<td width=20%>读/写</td>
<td width=16%>读/写</td>
<td width=17%>读/写</td>
</tr>
<tr valign=top>
<td width=26%><b>EditMode</b></td>
<td width=21%>只读</td>
<td width=20%>只读</td>
<td width=16%>只读</td>
<td width=17%>只读</td>
</tr>
<tr valign=top>
<td width=26%><b>EOF</b></td>
<td width=21%>只读</td>
<td width=20%>只读</td>
<td width=16%>只读</td>
<td width=17%>只读</td>
</tr>
<tr valign=top>
<td width=26%><b>Filter</b></td>
<td width=21%>读/写</td>
<td width=20%>读/写</td>
<td width=16%>读/写</td>
<td width=17%>读/写</td>
</tr>
<tr valign=top>
<td width=26%><b>LockType</b></td>
<td width=21%>读/写</td>
<td width=20%>读/写</td>
<td width=16%>读/写</td>
<td width=17%>读/写</td>
</tr>
<tr valign=top>
<td width=26%><b>MarshalOptions</b></td>
<td width=21%>读/写</td>
<td width=20%>读/写</td>
<td width=16%>读/写</td>
<td width=17%>读/写</td>
</tr>
<tr valign=top>
<td width=26%><b>MaxRecords</b></td>
<td width=21%>读/写</td>
<td width=20%>读/写</td>
<td width=16%>读/写</td>
<td width=17%>读/写</td>
</tr>
<tr valign=top>
<td width=26%><b>PageCount</b></td>
<td width=21%>不可用</td>
<td width=20%>不可用</td>
<td width=16%>只读</td>
<td width=17%>只读</td>
</tr>
<tr valign=top>
<td width=26%><b>PageSize</b></td>
<td width=21%>读/写</td>
<td width=20%>读/写</td>
<td width=16%>读/写</td>
<td width=17%>读/写</td>
</tr>
<tr valign=top>
<td width=26%><b>RecordCount</b></td>
<td width=21%>不可用</td>
<td width=20%>不可用</td>
<td width=16%>只读</td>
<td width=17%>只读</td>
</tr>
<tr valign=top>
<td width=26%><b>Source</b></td>
<td width=21%>读/写</td>
<td width=20%>读/写</td>
<td width=16%>读/写</td>
<td width=17%>读/写</td>
</tr>
<tr valign=top>
<td width=26%><b>State</b></td>
<td width=21%>只读</td>
<td width=20%>只读</td>
<td width=16%>只读</td>
<td width=17%>只读</td>
</tr>
<tr valign=top>
<td width=26%><b>Status</b></td>
<td width=21%>只读</td>
<td width=20%>只读</td>
<td width=16%>只读</td>
<td width=17%>只读</td>
</tr>
</table><br>
<p>
当 ADO 与 ODBC 的 Microsoft OLE DB Provider 1.0 版本一起使用时,<b>AbsolutePosition</b> 和 <b>AbsolutePage</b> 属性是只写的。</p>
<p>
标准 ADO<b> Recordset </b>方法的可用性:</p>
<table border=1 cellpadding=5 cols=5 frame=below rules=rows>
<tr valign=top>
<td class=label width=26%><b>方法</b></td>
<td class=label width=21%><b>仅向前</b></td>
<td class=label width=20%><b>动态</b></td>
<td class=label width=16%><b>键集</b></td>
<td class=label width=17%><b>静态</b></td>
</tr>
<tr valign=top>
<td width=26%><b>AddNew</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>Cancel</b></td>
<td width=21%></td>
<td width=20%></td>
<td width=16%></td>
<td width=17%></td>
</tr>
<tr valign=top>
<td width=26%><b>CancelBatch</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>CancelUpdate</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>Clone</b></td>
<td width=21%>否</td>
<td width=20%>否</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>Close</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>Delete</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>GetRows</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>Move</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>MoveFirst</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>MoveLast</b></td>
<td width=21%>否</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>MoveNext</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>MovePrevious</b></td>
<td width=21%>否</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>NextRecordset*</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>Open</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>Requery</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>Resync</b></td>
<td width=21%>否</td>
<td width=20%>否</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>Supports</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>Update</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
<tr valign=top>
<td width=26%><b>UpdateBatch</b></td>
<td width=21%>是</td>
<td width=20%>是</td>
<td width=16%>是</td>
<td width=17%>是</td>
</tr>
</table><br>
<p>
*不支持 Microsoft Access 数据库。</p>
<p>
<b>参阅<B> </B></b>有关 ODBC 的 Microsoft OLE DB Provider 的详细实现资料和功能信息,请查阅 ODBC 的 Microsoft OLE DB Provider 文档和《Microsoft OLE DB 程序员手册》,可以在 Data Access SDK 中得到。也可查阅 http://www.microsoft.com/data 处的数据访问 Web 页。</p>
<center> <A HREF="http://www.51windows.Net">www.51windows.Net</A></center>
<SCRIPT LANGUAGE="JavaScript" src="/log/sitelog2.asp"></SCRIPT>
<script src="script.js"></script></BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -