SQL-92 可塑情形（高级）

ODBC 桌面数据库驱动程序和底层的 Microsoft Jet 引擎不是 SQL-92 可塑的。它们支持许多定义在 SQL-92 的功能。驱动程序中支持的某些功能在 SQL-92 中得不到支持。若需更多信息，参见 Microsoft Jet 数据库引擎程序员指南。下列为两者之间的主要区别：

•	桌面数据库驱动程序使用的 SQL 支持比 SQL-92 更强大的表达式。

•	不同的规则应用 BETWEEN 谓词。

•	桌面数据库驱动程序和 ANSI SQL 使用的 SQL 支持不同的关键字。

Microsoft Jet SQL 不支持 SQL-92 下列功能：

•	安全性语句，例如 GRANT 和 LOCK。

•	具有合计函数引用的 DISTINCT。

下列功能是桌面数据库驱动程序使用的增强 SQL，而 SQL-92 未予指定：

•	TRANSFORM 语句支持交叉表查询。

•	附加的合计函数（StDev 和 VarP）。


附加支持的 ODBC SQL 语法（高级）

ODBC 驱动程序完全支持 Minimum ODBC 2.5 语法与 Core and Extended ODBC 2.5 语法中的下列子句。跳过 ALTER TABLE 语句、关连名称和程序执行主题，就可显示附加信息。

•	近似的数值文字（核心）

•	ALTER TABLE 语句（核心）

•	二进制文字（扩充）

•	BETWEEN 谓词（核心）

•	关连名称（核心)

•	EXISTS 谓词（核心）

•	IN (valuelist)（核心）

•	外部联结（扩充）

•	过程调用（扩充）

•	SELECT 语句（扩充）（包括 GROUP BY、HAVING 和 UNION 子句)

•	子查询 (SUBSELECT)（核心）

•	主题


ALTER TABLE 语句（核心）

请参阅

当使用 Microsoft Access、dBASE、Microsoft FoxPro 或 Paradox 驱动程序时，支持具有添加和删除表限制定义子句的 ALTER TABLE 语句。（Microsoft Excel 或 Text 驱动程序不支持 ALTER TABLE 语句。）


关连名称（核心）

完全支持关连名称，包括表列表中的关连名称。例如。在下列字符串中，E1 为 Emp 表的关连名称：

SELECT * FROM Emp E1
WHERE E1.LastName = '王'


过程调用（扩充）

当使用 Microsoft Access 驱动程序时，使用 SQLExecDirect 或 SQLPrepare 函数和下列语法：｛CALL procedure-name “(parameter“,parameter”...)”｝，就可从驱动程序调用过程。请注意，不支持表达式作为参数传到被调用的过程。

如果过程名称包括虚线，名称必须使用右引号 (`) 来分隔。

使用前面的语句可以调用参数化查询。


BETWEEN 谓词

语法：

expression1 BETWEEN expression2 AND expression3

只有在 expression1 大于或等于 expression2 并且 expression1 小于或等于 expression3 的情况下返回真。

此语法的语义对桌面数据库驱动程序和 Microsoft Jet 引擎来说是不同的。在 Microsoft Jet SQL 中，expression2 可以大于 expression3，所以只有在 expression1 大于或等于 expression3 且 expression1 小于或等于 expression2 的情况下，语句才返回真。


CREATE INDEX 语句

请参阅

CREATE INDEX 语句的语法是：

CREATE “UNIQUE” INDEX index-name ON table-name (column-identifier “ASC”“DESC”“, column-identifier “ASC”“DESC”...”) WITH <index option list>

其中 <index option list> 可以是：PRIMARY｜DISALLOW NULL｜IGNORE NULL

只有 Microsoft Access 驱动程序使用 DISALLOW NULL 和 IGNORE NULL 索引选项。dBASE、Microsoft FoxPro 和 Paradox 驱动程序接受此语法，但是忽略两个选项之一的存在。

当使用 Paradox 驱动程序时，CREATE INDEX 语句会创建 Paradox 主键文件和次级文件。

Microsoft Excel 或文本驱动程序不支持此语句。


日期算术

驱动程序支持对 DATE、TIME、或 TIMESTAMP 列进行整数的加和减。对于 DATE 列，整数表示要加或减的日数。对于 TIME 或 TIMESTAMP 列，整数表示要加或减的秒数。


日期、时间及时间戳文字

为了达到过程间最大协作，应用程序应该用 escape 子句语法来发送 ODBC 正规格式的日期文本：

•	对于日期文字，｛d 'value'｝，其中 value 为“yyyy-mm-dd”形式

•	对于时间文字，｛t 'value'｝，其中 value 为“hh:mm:ss”形式

•	对于时间戳文字 ｛ts 'value'｝，其中 value 为“yyyy-mm-dd hh:mm:ss”形式。


DROP INDEX 语句

当使用 Microsoft Access、dBASE、Microsoft FoxPro、或 Paradox 驱动程序时，DROP INDEX 语句的语法是“DROP INDEX a on b”，其中“a”是索引的名称，“b”是表的名称（不是 DROP INDEX index-name）。

当使用 Paradox 驱动程序时，DROP INDEX 语句会删除 Paradox 次级索引文件。

Microsoft Excel 或 Text 驱动程序不支持 DROP INDEX 语句。


定宽文本文件

当使用 Text 驱动程序时，定宽文本文件的最后列可以是可变长度。


GROUT BY expression-list

就像支持列名一样，GROUP BY 也支持表达式列表。具有 GROUP BY 子句的 SELECT 语句的选择列表仅能包含来自 GROUP BY 子句或集合函数的表达式。


ORDER BY expression-list

可以在 ORDER BY 子句中使用表达式。例如，在下列子句中，表由三个键表达式：a+b、c+d 和 e 来排序。

SELECT * FROM emp
ORDER BY a+b,c+d,e

在集合函数或包括集合函数的表达式中不允许排序。


使用 GROUP BY 的 ORDER BY

可在 GROUP BY expression-list 的任何表达式上或结果集中的任何列中执行 ORDER BY。


外部联结

SELECT 语句可以包含 OUTER JOIN 子句的列表。支持嵌套的 OUTER JOINS。若需更多关于 OUTER JOINS 的信息，参见 Microsoft Jet 数据库引擎程序员指南。


标量函数

Microsoft ODBC 桌面数据库驱动程序支持下列标量函数：

CONCAT	LCASE	RIGHT
CONVERT	LEFT	RTRIM
CURDATE	LENGTH	SUBSTRING
CURTIME	LOCATE	UCASE
DATABASE	LTRIM	USER
DAYOFMONTH	MOD	YEAR
DAYOFWEEK	MONTH
若需关于标量函数的自变量和返回值的信息，参见 Microsoft ODBC SDK Programmer's Reference 的附录 F。


表名称

当使用 dBASE、Microsoft Excel、Microsoft FoxPro、Paradox 或 Text 驱动程序时，在 SELECT 或 DELETE 的 FROM 子句中、在 INSERT 的 INTO 子句之后以及 UPDATE、CREATE TABLE 和 DROP TABLE 之后出现的表名称可以包括有效路径、主文件名及文件扩展名。

在 SQL 语句中表名称的用法不支持使用路径或文件扩展名，只接受主文件名（例如，EMP FROM C:\ABC\EMP）。

可以使用关连名称（别名）。例如：

SELECT *
FROM C:\ABC\EMP T1
WHERE T1.COL1 = 'aaa'


合计函数限制

合计函数和非合计列引用都不能用来作为单一 SQL 语句的自变量。


ALTER TABLE 语句限制

请参阅

当使用 dBASE、Microsoft FoxPro 或 Paradox 驱动程序时，一旦创建索引并添加一个记录时，ALTER TABLE 语句就不能更改表的结构，除非删除索引并删除表的内容。

Microsoft Excel 或 Text 驱动程序不支持 ALTER TABLE 语句。


AND 谓词限制

支持最多 40 个 AND 谓词。


CALL 语句限制

（此限制只应用到 Microsoft Access 驱动程序。）

不支持表达式作为参数传到被调用过程。


列名限制

列名可以包含任何有效的字符（例如，空格）。如果列名包含除了字母、数目及下划线以外的任何字符，则名称必须用右引号 (`) 括起来而加以分隔。

当使用 Microsoft Access 或 Microsoft Excel 驱动程序时，列名限于 64 个字符，且多于 64 个字符的名称会生成错误。当使用 Paradox 驱动程序时，最长的列名是 25 个字符。当使用 Text 驱动程序时，最长的列名是 64 个字符，且多于 64 个字符的名称会被截断。

当使用 dBASE 或 Microsoft FoxPro 驱动程序时，ASCII 值大于 127 的字符会转换成下划线。

当使用 Microsoft Excel 驱动程序时，如果列名存在，则它们必须在第一行中。在 Microsoft Excel 中使用“!”字符的名称必须用右引号“`”括起来。“!”字符会转换成“$”字符，因为在 ODBC 名称中，“!”字符是不合法的，甚至在用右引号将名称括起来时也是如此。所有其它有效的 Microsoft Excel 字符（除了 pipe 字符 (｜) 之外），包括空格字符，都可在列名中使用。对于包括空格的 Microsoft Excel 列名，您必须使用分隔标识符。对于未指定的列名，驱动程序生成的名称将取代未指定的列名，例如，“Col1”为第一列。

pipe (｜) 不能在列名中使用，且不论是否用右引号将名称括起来。

当使用 Text 驱动程序时，如果没有指定列名，则驱动程序会提供默认名称。例如，驱动程序叫第一列为 F1、第二列为 F2 等等。


CONVERT 函数限制

类型转换失败将导致把受影响的列设置成 NULL。

CONVERT 函数不能将 DATE 或 TIMESTAMP 数据类型转换成另一数据类型（或它本身）。


CREATE INDEX 语句限制

请参阅

Microsoft Excel 或 Text 驱动程序不支持 CREATE INDEX 语句。

每个索引最多可定义 10 列。如果在 CREATE INDEX 语句中包括的列多于 10 个，则不能索引标识，并将表视为未创建索引。

dBASE 驱动程序不能在 LOGICAL 列上创建索引。

当使用 dBASE 或 Microsoft FoxPro 驱动程序时，通过在 SELECT 语句的 WHERE 子句指定的列（字段）上创建 .MDX（或 .NDX）索引，可以改善大文件的响应时间。现存的 .MDX 索引将自动地应用到 WHERE 子句以及 join 谓词中的 =、>、<、>=、=<、BETWEEN 运算符和 LIKE 谓词。

当使用 dBASE 或 Microsoft FoxPro 驱动程序时，CREATE UNIQUE INDEX 语句创建的索引实际上不是唯一的，并且可以将重复值插入到索引列。对于具有相等索引值的集合中，只可增加一个记录到索引中。

当使用 Paradox 驱动程序时，唯一索引必须定义在表中列出的连续列上（包括第一列）。如果在表上没有定义唯一索引，则 Paradox 驱动程序不能更新表。


CREATE TABLE 语句限制

当使用 Microsoft Access、Microsoft Excel 或 Paradox 驱动程序，并且没有指定文本或二进制列的长度（或只是将它们指定为 0）时，将列长度设置成 255。

当使用 dBASE 或 Microsoft FoxPro 驱动程序，并且没有指定文本或二进制列的长度（或只是将它们指定为 0）时，将列长度设置成 254。

最多支持 255 个列。

当把 Microsoft Excel 驱动程序用于 Microsoft Excel 5.0、7.0 或 97 数据源上时，工作表不能使用与以前删除的工作表相同的名称。当使用 Microsoft Excel 驱动程序访问 5.0、7.0 或 97 版的工作表时，DROP TABLE 语句会清除工作表，但不删除工作表名称。

当使用 Paradox 驱动程序时，一旦已经定义在表上索引，则不能增加列。如果 CREATE TABLE 语句的自变量列表的第一列创建索引，则自变量列表不包含第二列。


日期算术限制

日期的算术不支持由 DATE 数据类型减去 DATE 数据类型。


DELETE 语句限制

Microsoft Excel 或 Text 驱动程序不支持 DELETE 语句。注意，Text 驱动程序支持 INSERT 语句。

dBASE 或 Microsoft FoxPro 驱动程序都不支持通过压缩表来删除“已删除的”值。

如果 Paradox 驱动程序要从表删除行，则表必须有唯一索引（Paradox 主键）。


DISTINCT 关键字限制

不支持长文本字段 (Microsoft Access) 或备注字段（dBASE 或 FoxPro）。


DROP INDEX 语句限制

Microsoft Excel 或 Text 驱动程序不支持 DROP INDEX 语句。


DROP TABLE 语句限制

当使用 MicrosoftEXCEL 5.0、7.0 或 97 驱动程序时，DROP TABLE 语句会清除工作表，但不删除工作表名称。因为工作表名称一直在工作簿中，所以不能使用相同的名称来创建另一工作表。


FROM 子句限制

在 FROM 子句中表数目最大是 16。


HAVING 子句限制

在 HAVING 子句中搜索条件数目最大是 40。


标识符限制

如果标识符包括空格或特殊符号，则标识符必须用右引号括起来。有效的名称不得多于 64 个字符，其中第一个字符不得为空格。有效名称不可包含控制字符或下列特殊字符：` | # * ? “ ” . ! $。

不要用 Microsoft ODBC Programmer's Reference 的附录 C 的 SQL 语法中列出的保留字（或这些保留字的缩写形式）为标识符（即表或列名），除非您用右引号 (`) 将字括起来。


索引名限制

当使用 Paradox 驱动程序时，主键必须和定义它的表有相同的名称。其它唯一的或非唯一的索引必须和定义它们的表有相同的名称。


INSERT 语句限制

如果插入的数据太长，不能将其放入列中，则会不提警告就从右边截断。

如果试图将超出列数据类型范围的值插入，则会导致将 NULL 插入列中。

当使用 dBASE、Microsoft Excel、Microsoft FoxPro、Paradox 或 Text 驱动程序时，插入零长度字符串到列中，实际上就是插入 NULL。

当使用 Microsoft Excel 驱动程序时，如果将空串插入列，则空串会转换成 NULL；在那个列上，WHERE 子句中用空串执行的已搜索的 SELECT 语句将不会成功。

如果没有在表上定义唯一索引，则 Paradox 驱动程序不能更新表。而对于空表来说却不是这样，即使在表上没有定义唯一索引，该空表也可用单一行更新。如果在没有定义唯一索引的空表中插入单一行，则在插入单一行后，应用程序不能创建唯一索引或插入附加数据。

当使用 Text 驱动程序时，在固定长度文件中将 NULL 值表示成用空格填补的字符串，但在分隔符的文件中用无空格表式。例如，下面的例子包括三个字段，第二个字段是 NULL 值：

     "Smith:,, 123

当使用 Text 驱动程序时，所有列值可用前导空格填补。任何行的长度必须小于或等于 65,543 个字节。


LIKE 谓词限制

如果列中的数据比 255 字符还长，LIKE 比较将只根据前面的 255 个字符进行。

在过程中使用的 LIKE 仅支持常数模式。桌面数据库驱动程序支持 SQL 92 LIKE 模式匹配。

不支持在 LIKE 谓词中使用 escape 子句。

不应该在包括数值或浮点数数据类型数据的列中执行 LIKE 比较。其结果可能难以预料。若需更多信息，参阅 Microsoft Jet 数据库引擎程序员指南。


NOT NULL 限制

不支持 CREATE TABLE 语句中的 NOT NULL 条件。


ORDER BY 子句限制

如果 SELECT 语句包含 GROUP BY 子句和 ORDER BY 子句，则 ORDER BY 子句只可包含结果集中的一个列或 GROUP BY 子句中的一个表达式。


参数查询限制

当使用 Microsoft Access 驱动程序时，可用下列语法调用参数查询：CALL query-name “(parameter“,parameter”...)”。


保留字限制

不要用《 Microsoft ODBC 程序员参考手册》的附录 C 的 SQL 语法列出的保留字（或这些保留字的缩写形式）作标识符（即表或列名），除非您用右引号 (`) 将字括起来。


Scalar 函数限制

仅通过使用 ODBC 正规格式支持 Scalar 函数。


SELECT DISTINCT 限制

DISTINCT 关键字不用于二进制数据。


SELECT 语句限制

不能在 SELECT 语句中将合计函数列和非合计函数列混合起来。

具有 GROUP BY 子句的 SELECT 语句的选择列表仅能有从 GROUP BY 子句或集合函数得到的表达式。

在包含 GROUP BY 子句的 SELECT 语句中，不支持（为选取所有列而）使用星号。必须指定被选取的列名。

在 SELECT 语句中不支持竖杠 (|) 的使用。如果需要引用包括竖杠的数据值，请在 SELECT 语句中使用参数。

当在 SELECT 语句中使用列别名时，“as”必须在别名之前。例如，“SELECT col1 as a from b”。如果不含“as”，则语句将返回错误。

如果在 SELECT 语句里输入不正确的列名，则将返回 SQLSTATE 07001 错误，“错误的参数个数”，而不是 SQLSTATE S0022 错误，“找不到列”。

当使用 Microsoft Excel 驱动程序时，如果将空串插入列中，空串会转换成 NULL；在该列上，WHERE 子句中用空串执行的一个已搜索的 SELECT 语句将不会成功。


集合函数限制

集合函数（AVG、MAX、MIN 和 SUM）不支持 DISTINCT 关键字。


排序限制

在 GROUP BY 子句、ORDER BY 子句、SELECT DISTINCT 语句或外部联结中，排序索引的最大长度是 255 个字节；在排序行中所有排序索引的最大长度是 65,500 个字节。


字符串限制

SQL 语句字符串的最大长度是 65,000 个字符。

当使用 Microsoft Access 驱动程序时，只支持 SQL 92 字符串常数（使用单引号，不是双引号）。

不论字符是否用右引号括起来，不能在字符串中使用 pipe 字符 (｜)。

为了在应用程序间尽量协调，应用程序应该在参数中传递字符串，而不是传递有引号的字符串。


表名称限制

表名称可包含任何有效字符（例如，空格）。如果表名称包括除字母、数字及下划线之外的任何字符，则必须用右引号 (`) 将名称括起来。

当使用 Microsoft Excel 驱动程序，且在数据库引用时找不到表名称时，系统会使用默认数据库。如果 Microsoft Excel 中的名称包括“!”字符，则将自动用‘$’字符代替它。

Microsoft Excel 3.0 和 4.0 文件支持引用 ＜文件名＞ 的 Microsoft Excel 表名称。Microsoft Excel 5.0、7.0 或 97 支持引用 ＜工作簿名称＞ 的 Microsoft Excel 表名称。

当使用 dBASE 或 Microsoft FoxPro 驱动程序时，ASCII 值大于 127 的字符会转换成下划线。

当使用 Microsoft Access 驱动程序时，表名称限于 64 个字符。

当使用 dBASE、Microsoft Excel 3.0 或 4.0、Microsoft FoxPro、Paradox 或 Text 驱动程序时，不可将特殊的 MS-DOS 关键字 CON、AUX、LPT1 和 LPT2 作为表名称。


表引用限制

在任何查询语句中最多可包括 16 个表引用。


UPDATE 语句限制

如果 Paradox 驱动程序要更新表，则表必须有唯一索引（Paradox 主键）。

 Text 驱动程序不支持这一限制。

当使用 Microsoft Excel 驱动程序时，可以更新值，但不能删除基于 Microsoft Excel 电子数据表的表的行。结果，不能认为 Microsoft Excel 驱动程序支持 UPDATE 语句。只能认为 Microsoft Excel 驱动程序支持 INSERT 语句。


View 的限制

dBASE、Microsoft Excel、Microsoft FoxPro、Paradox 或 Text 驱动程序都不支持 View。


WHERE 子句限制

在 WHERE 子句中子句数目最大是 40。

LONGVARBINARY 和 LONGVARCHAR 列可在长度是 255 个字符的文字范围内进行比较，但不能用参数比较。


WHERE CURRENT OF 子句限制

不支持。


dBASE 索引（高级）

请参阅

ODBC dBASE 的驱动程序自动打开并更新 dBASE IV 索引文件。必须使用通过“ODBC 控制面板”选项显示的“选取索引”对话框，以使 dBASE 文件和 dBASE III .NDX 文件关联。

下列限制应用于 dBASE 索引的创建：

•	所有列名必须是有效的。

•	所有列必须有相同的递增排序或递减排序顺序。

•	任何单一文本列的长度必须小于 100 个字节。

•	如果拥有多个列，则全部列都必须是文本列，并且列大小的和必须小于 100 个字节。

•	备注字段不能索引。

•	不能对当前字段的集合指定索引（即不允许重复索引）。

•	索引名必须与 dBASE 索引命名约定匹配。dBASE III 要求把每一索引放在单独的文件中，且每一索引文件以 .NDX 为文件扩展名。在 dBASE IV 中，将索引作为标记名称来创建，并将这些标记名称存储在单独的 .MDX 文件中。.MDX 文件的文件名与数据库文件的文件名相同，但文件扩展名不同（例如，EMP.MDX 是 EMP.DBF 数据库的索引文件）。


Microsoft FoxPro 索引（高级）

请参阅

ODBC Microsoft FoxPro 的驱动程序自动打开并更新 Microsoft FoxPro 2.5 或 2.6 索引文件。必须使用通过“ODBC 控制面板”选项显示的“选定索引”对话框使 Microsoft FoxPro 文件和 Microsoft FoxPro 2.0 .IDX 文件相关联。

下列限制应用于 Microsoft FoxPro 索引的创建：

•	所有列名必须是有效的。

•	所有列必须有相同的递增排序或递减排序顺序。

•	任何单一文本列的长度必须小于 100 个字节。

•	如果拥有多个列，则全部列都必须是文本列，并且列大小的和必须小于 100 个字节。

•	备注字段不能索引。

•	不能对当前字段的集合指定索引（即不允许重复索引）。

•	索引名必须与 dBASE 索引命名约定匹配。dBASE III 要求把每一索引放在单独的文件中，且每一索引文件以 .NDX 为文件扩展名。在 dBASE IV 中，将索引作为标记名称来创建，并将这些标记名称存储在单独的 .MDX 文件中。.MDX 文件的文件名与数据库文件的文件名相同，但文件扩展名不同（例如，EMP.MDX 是 EMP.DBF 数据库的索引文件）。


Paradox 的 CREATE INDEX（高级）

请参阅

ODBC Paradox 驱动程序的 CREATE INDEX 语句的语法为：

CREATE “UNIQUE” INDEX index-name
   ON table-name
   (column-identifier “ASC”
    “, column-identifier “ASC”...”)

对于 CREATE INDEX 语句，ODBC Paradox 驱动程序不支持 ODBC SQL 语法中的 DESC 关键字。table-name 自变量能指定表的完整路径。

如果指定关键字 UNIQUE，则 ODBC Paradox 驱动程序将创建唯一索引。第一个创建的唯一索引是主键。这是 Paradox 主键文件，其名为 table-name.PX。主键需遵守下列限制：

•	必须在将任何行添加到表之前创建主键。

•	主键必须定义在表前“n”个列中。

•	每个表只允许一个主键。

•	如果未在表上定义主键，则不能用 Paradox 驱动程序更新表。（对空表来说并不如此；即使未在表上定义唯一索引，也可更新该空表。）

•	按照 Paradox的需要，主键的 index-name 自变量必须和表的主文件名相同。

如果省略关键字 UNIQUE，则 ODBC Paradox 驱动程序将创建非唯一索引。它包括两个命名为 table-name.Xnn 和 table-name.Ynn 的 Paradox 次级文件，其中 nn 是表中的列数目。非唯一索引遵守下列限制：

•	表的主键必须先存在，才能创建表的非唯一索引。

•	对于 Paradox 3.x，除了（唯一或非唯一）主键外的任何索引的 index-name 自变量必须和列名相同。对于 Paradox 4.x 和 5.x，这种索引的名称可以和列名相同，但不必一定要和列名相同。

•	只有一个列可指定为非唯一索引。

一旦在表上定义了索引，就不能添加列。如果 CREATE TABLE 语句自变量列表的第一列创建索引，则自变量列表不能包含第二列。

例如，为了使用销售订单编号和货品号列作为 SO_LINES 表上的唯一索引，可用下列语句：

CREATE UNIQUE INDEX SO_LINES
   ON SO_LINES (SONum, LineNum)

为了使用部件编号列作为 SO_LINES 表上的非唯一索引，请用语句：

CREATE INDEX PartNum
   ON SO_LINES (PartNum)

注意，当执行两个 CREATE INDEX 语句时，第一个语句总使用和表相同的名称创建主键，并且第二个语句将总使用和列相同的名称创建非唯一索引。即使在 CREATE INDEX 语句输入不同的名称，且在第二个 CREATE INDEX 语句中，索引用了 UNIQUE，也用这一方法为这些索引命名。


Microsoft Access 数据类型（高级）

下表显示 Microsoft Access 的数据类型、用来创建表的数据类型和 ODBC SQL 的数据类型。

Microsoft Access 数据类型	数据类型 (CREATETABLE)	ODBC SQL 数据类型
BINARY	BINARY	SQL_BINARY
BIT	BIT	SQL_BIT
COUNTER	COUNTER	SQL_INTEGER
CURRENCY	CURRENCY	SQL_NUMERIC
DATE/TIME	DATETIME	SQL_TIMESTAMP
LONG BINARY	LONGBINARY	SQL_LONGVARBINARY
LONG Text	LONGText	SQL_LONGVARCHAR
MEMO	LONGText	SQL_LONGVARCHAR
NUMBER (FieldSize= SINGLE)	SINGLE	SQL_REAL
NUMBER (FieldSize= DOUBLE)	DOUBLE	SQL_DOUBLE
NUMBER (FieldSize= BYTE)	UNSIGNED BYTE	SQL_TINYINT
NUMBER (FieldSize= INTEGER)	SHORT	SQL_SMALLINT
NUMBER (FieldSize= LONG INTEGER)	LONG	SQL_INTEGER
OLE	LONGBINARY	SQL_LONGVARBINARY
Text	VARCHAR	SQL_VARCHAR
VARBINARY	VARBINARY	SQL_VARBINARY
注意   SQLGetTypeInfo 返回 ODBC 数据类型。如果将多个 Microsoft Access 类型映射到相同的 ODBC SQL 数据类型，则它将不返回所有的 Microsoft Access 数据类型。在《Microsoft ODBC 程序员参考手册》附录 D 中的所有转换都支持前表所列的 SQL 数据类型。

下表陈述 Microsoft Access 数据类型的限制。

数据类型	描述
BINARY、VARBINARY 和 VARCHAR	创建零长度或未指定长度的 BINARY、VARBINARY 或 VARCHAR 列后实际上返回 255 个字节的列。
BYTE	即使 Microsoft Access NUMBER 字段连同与 BYTE 相等的 FieldSize 字段都是无符号数，在使用 Microsoft Access 驱动程序时，也可在该字段中插入负数。
CHAR、LONGVARCHAR 和 VARCHAR	字符串文字能含任何 ANSI 字符（十进制 1-255）。使用连续的两个单引号 (' ') 来代表一个单引号 (')。 在字符数据类型列使用任何特殊的字符时，都应该使用过程来传递字符数据。
DATE	必须根据 ODBC 正规日期格式来分隔日期值或用日期时间分隔符   (“＃”) 来分隔日期值。否则，Microsoft Access 将视此值为算术表达式，并且不会有警告或错误。 例如，日期“March 5, 1996”必须表示成 {d �1996-03-05拀 或 #03/05/1996#；否则，如果仅发送 03/05/1993，则 Microsoft Access 将把它看成 3 除以 5 除以 1996。此值四舍五入为整型 0，因为零日被映射到 1899-12-31，所以这是用到的日期。 pipe 字符 (|) 不能用于日期值中，即使用右引号括起来，也不能使用。
其它在数据类型上的限制可以在数据类型限制中找到。


dBASE 数据类型（高级）

下表说明如何将 dBASE 数据类型映射到 ODBC SQL 数据类型。注意，并非所有的 ODBC SQL 数据类型都得到支持。

dBASE 数据类型	ODBC 数据类型
CHAR	SQL_VARCHAR
DATE	SQL_DATE
FLOAT *	SQL_DOUBLE
LOGICAL	SQL_BIT
MEMO	SQL_LONGVARCHAR
NUMERIC  (BCD)	SQL_DOUBLE
OLEOBJECT *	SQL_LONGBINARY
* 只在 dBASE 5.x 版有效

dBASE III 的精确度允许数字最高有两位指数，在 dBASE IV 中数字最高有三位指数。因为以文本方式存储数字，所以在使用时会将它们转换成数字。如果转换的数字不可放进字段中，则会发生不能解释的结果。

dBASE 允许用 NUMERIC 数据类型指定有效位数和次方数，但 ODBC dBASE 驱动程序不支持它。对于 NUMERIC 数据类型，ODBC dBASE 驱动程序总是返回 15 个有效位数和 0 的次方数。

使用 ODBC dBASE 驱动程序创建的具有 Numeric 数据类型的列会映射到 SQL_DOUBLE ODBC 数据类型。因此会将此列中的数据四舍五入。此行为和 dBASE（类型 N）中的 NUMERIC 数据类型不同，后者是 Binary Coded Decimal (BCD)。

注意   SQLGetTypeInfo 返回 ODBC 数据类型。《Microsoft ODBC SDK 程序员参考手册》附录 D 中的所有转换都支持此主题中前表所列的 ODBC SQL 数据类型。

下表显示 dBASE 数据类型的限制。

数据类型	描述
CHAR	创建零长度或未指定长度的 CHAR 列后实际上返回 254 个字节的列。
加密数据	dBASE 驱动程序不支持加密 dBASE 表。
LOGICAL	dBASE 驱动程序不能在 LOGICAL 列上创建索引。
MEMO	MEMO 列最大的长度是 65,500 个字节。
可在数据类型限制中找到对数据类型的其它限制。


Microsoft Excel 数据类型（高级）

下表显示如何将 Microsoft Excel 驱动程序数据类型映射到 ODBC SQL 数据类型。Microsoft Excel 驱动程序根据列中的数据指定 Microsoft Excel 表中列的数据类型。

Microsoft Excel 数据类型	ODBC 数据类型
CURRENCY	SQL_NUMERIC
DATETIME	SQL_TIMESTAMP
LOGICAL	SQL_BIT
NUMBER	SQL_DOUBLE
Text	SQL_VARCHAR
注意   SQLGetTypeInfo 返回 ODBC 数据类型。在《Microsoft ODBC SDK 程序员参考手册》附录 D 中的所有转换都支持此主题中列在前面表格中的 ODBC SQL 数据类型。

下表显示 Microsoft Excel 数据类型的限制。

数据类型	描述
加密数据	Microsoft Excel 驱动程序不能读入加密数据。
错误字符串	Microsoft Excel 驱动程序对于 Microsoft Excel 错误值（#N/A!、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME?和 #NULL!）不能返回字符串，但是会返回 NULL。
LOGICAL	在 SQL_C_CHAR 缓冲区中，LOGICAL 列中的值返回到 0 或 1。
NUMBER	如果创建整型列，则可输入对于整型数据类型过大的数目，并能插入包含非整型值的数据，结果，列可能会转换成    SQL_DOUBLE。
Text	当列的行包含多个 Microsoft Excel 数据类型时，ODBC Microsoft Excel 驱动程序会将列设置成 SQL_VARCHAR 数据类型。但有一个例外：如果列只包括两个或三个日期时间数据类型（DATE、TIME 和 DATETIME），则 ODBC Microsoft Excel 驱动程序会将列设置成 SQL_TIMESTAMP 数据类型。 创建零长度或未指定长度的文本列实际上返回 255 个字节的列。 字符串文字可包含任何 ANSI 字符（十进制 1-255）。使用连续的两个单引号 (' ') 来代表一个单引号 (')。 在使用 SQL_VARCHAR 以外的数据类型列插入 NULL，这将使列的数据类型变成 SQL_VARCHAR。
可在数据类型限制中找到对数据类型的其它限制。


Microsoft FoxPro 数据类型（高级）

下表说明 Microsoft FoxPro 数据类型如何映射到 ODBC SQL 数据类型。注意，并非所有的 ODBC SQL 数据类型都得到支持。

Microsoft FoxPro 数据类型	ODBC 数据类型
CHAR	SQL_VARCHAR
DATE	SQL_DATE
GENERAL	SQL_LONGVARBINARY
LOGICAL	SQL_BIT
MEMO	SQL_LONGVARCHAR
NUMERIC (BCD)	SQL_DOUBLE
Microsoft FoxPro 2.0 中的精确度允许数字最高可有两位指数，在 Microsoft FoxPro 2.5 中数字最高可有三位指数。因为以文本方式存储数字，使用时会将文本转换成数字。如果转换的数字放不进字段中，就会发生不能解释的结果。

Microsoft FoxPro 允许用 NUMERIC 数据类型指定有效数字和次方数，但 ODBC Microsoft FoxPro 驱动程序不支持。对于 NUMERIC 数据类型，ODBC Microsoft FoxPro 驱动程序总是返回 15 个有效数字和 0 的次方数。

使用 ODBC Microsoft FoxPro 驱动程序创建具有 NUMERIC 数据类型的列，该列会映射到 SQL_DOUBLE ODBC 数据类型。因此在此列中的数据会四舍五入。此行为和在 Microsoft FoxPro（类型 N）中的 NUMERIC 数据类型是不同的，后者是 Binary Coded Decimal (BCD)。

注意   SQLGetTypeInfo 返回 ODBC 数据类型。在《Microsoft ODBC SDK 程序员参考手册》附录 D 中的所有转换都支持在此主题中列在前面表格中的 ODBC SQL 数据类型。

下表说明 Microsoft FoxPro 数据类型的限制。

数据类型	描述
CHAR	创建零长度或未指定长度的 CHAR 列后实际上返回 254 个字节的列。
GENERAL	只有 Microsoft FoxPro 2.5 和 2.6 版的文件支持 General 数据类型。
MEMO	MEMO 列最大长度是 65,500 个字节。
可在数据类型限制中找到对数据类型的其它限制。


Paradox 数据类型（高级）

ODBC Paradox 驱动程序将 Paradox 数据类型映射到 ODBC SQL 数据类型。下表列出所有 Paradox 数据类型并且显示它们映射的 ODBC SQL 数据类型。

Paradox 数据类型	ODBC 数据类型
ALPHANUMERIC	SQL_VARCHAR
AUTOINCREMENT #	SQL_INTEGER
BCD #	SQL_DOUBLE
BYTES #	SQL_BINARY
DATE	SQL_DATE
IMAGE *	SQL_LONGVARBINARY
LOGICAL #	SQL_BIT
LONG #	SQL_INTEGER
MEMO *	SQL_LONGVARCHAR
MONEY #	SQL_DOUBLE
NUMBER	SQL_DOUBLE
SHORT	SQL_SMALLINT
TIME #	SQL_TIMESTAMP
TIMESTAMP #	SQL_TIMESTAMP
* 仅对 Paradox 4.x 和 5.x 版有效。

# 仅对 Paradox 5.x 版有效。

注意   SQLGetTypeInfo 返回 ODBC 数据类型。Microsoft ODBC Programmer's Reference 附录 D 中的所有转换都支持在此主题中列在前面表格中的 ODBC SQL 数据类型。

下表说明 Paradox 数据类型的限制。

数据类型	描述
ALPHANUMERIC	创建零长度或未指定长度的 ALPHANUMERIC 列后实际上返回 255 个字节的列。
BYTES	如果用 Paradox5 驱动程序将 NULL 插入到二进制列，它会变成   0。
LONG	在 Paradox 5.x 中，对于 Long 数据类型，Paradox 驱动程序支持的最大负数不是 -2^31 (-2147483648)，因为 Long 映射到 ODBC 数据类型的 SQL_INTEGER，Paradox 驱动程序会将 Long 映射到 ODBC 数据类型的 SQL_INTEGER。Long 支持的最大负数实际上是 -2^31 + 1 (-2147483647)。
TIMESTAMP	Paradox 驱动程序将值插入到 TIMESTAMP 列，然后从列获取，由于四舍五入，获取的值可能和插入值不同，最多会差到 1 秒。
可在数据类型限制中找到对数据类型的其它限制。


文本数据类型（高级）

下表说明字数据类型如何映射到 ODBC SQL 数据类型。注意，ODBC Text 驱动程序不支持所有的 ODBC SQL 数据类型。

Text 数据类型	ODBC 数据类型
CHAR	SQL_VARCHAR
DATETIME	SQL_TIMESTAMP
FLOAT	SQL_DOUBLE
INTEGER	SQL_INTEGER
LONGCHAR	SQL_LONGVARCHAR
注意   SQLGetTypeInfo 返回 ODBC 数据类型。在《Microsoft ODBC 程序员参考手册》附录 D 中的所有转换都支持列在前面表格中的 SQL 数据类型。

下表说明字数据类型的限制。

数据类型	描述
CHAR	创建零长度或未指定长度的 CHAR 列后实际上返回 255 个比特的列。 在用分隔符分隔数据的文件中，CHAR 列在开头和结尾可以有双引号分隔符、也可以没有双引号分隔符；在固定长度文件中，不用双引号作分隔符。
DATETIME	MM-DD-YY（例如，01-17-92） MMM-DD-YY（例如，Jan-17-92） DD-MMM-YY（例如，17-Jan-92） YYYY-MM-DD（例如，1992-01-17） YYYY-MMM-DD（例如，1992-Jan-17） 在表中不允许混用不同日期分隔符。 文本 ISAM 将 DATETIME 字段格式化成美洲或欧洲格式，这取决于 Windows“控制面板”中的“国际标准”。
FLOAT	最大宽度包括正负号和小数点。在 SCHEMA.INI 中，宽度表示方式如下： 14.083 是 FLOAT 宽度 6 -14.083 是 FLOAT 宽度 7 +14.083 是 FLOAT 宽度 7 14083. 是 FLOAT 宽度 6 对于 FLOAT 列，ODBC 总是返回 8。 FLOAT 列也可以是科学记数法，例如： -3.04E+2 是 FLOAT 宽度 8 25E4 是 FLOAT 宽度 4 注意   十进制和科学记数法不能在列中混合。 在固定长度文件中，NULL 值表示成空格填补的字符串，在用分隔符分隔数据的文件中 NULL 会被省略。 浮点数数据可用前导空格填补。
INTEGER	INTEGER 列的有效数是 32767 到 -32766。 在 SCHEMA.INI 中，宽度表示如下： 14083 是 INTEGER 宽度 5 0 是 INTEGER 宽度 1 对于 INTEGER 列，ODBC 总是返回 4。 最大宽度包括正负号。尽管由于固定格式表中允许空格，INTEGER 列宽度可以更大，但其最大宽度是 11。
LONGCHAR	在固定长度或分隔符分隔数据的表中，LONGCHAR 列的宽度在理论上的限制是 65500K。Text ISAM 可提供最高支持到 32K 的可靠支持。
可在数据类型限制中找到对数据类型的其它限制。


数据类型限制（高级）

Microsoft ODBC 桌面数据库驱动程序具有下列数据类型的限制：

数据类型	描述
所有数据类型	类型转换失败可能造成被影响的列设置成 NULL。
BINARY	创建零长度的 BINARY 列后实际上返回 255 个字节的 BINARY 列。
DATE	CONVERT 函数不能将 DATE 数据类型转换成另一数据类型 （或它本身）。
DECIMAL (Exact Numeric)	不支持。
浮点数数据类型	在 Windows“控制面板”的“国际标准”中设置的数字格式可能会限制浮点数数字中的小数的位数。
TIMESTAMP	CONVERT 函数不能将 TIMESTAMP 数据类型转换成它本身。
TINYINT	TINYINT 值始终是无符号数。
零长度字符串	当使用 dBASE、Microsoft Eecel、Microsoft FoxPro、Paradox 或 Text 驱动程序时，插入零长度字符串到列中实际上是插入 NULL。


错误信息（高级）

在发生错误时，Microsoft ODBC 桌面数据库驱动程序返回本地错误编号、SQLSTATE（ODBC 错误码）和错误信息。

本地错误

正的本地错误码由桌面数据库驱动程序生成，负的错误码由 Microsoft Jet 生成。若需更多信息，参阅 Microsoft Jet 数据库引擎程序员指南。

SQLSTATE

对于发生在数据源中的错误，ODBC 驱动程序将返回的本地错误映射到适当的 SQLSTATE。对于驱动程序或驱动程序管理器侦测到的错误，ODBC 驱动程序或驱动程序管理器会生成适当的 SQLSTATE。

错误信息

对发生在数据源中的错误，ODBC 驱动程序返回 ODBC 文件程序库传给它的错误信息。对于发生在 ODBC 驱动程序或驱动程序管理器的错误，驱动程序根据与 SQLSTATE 相关联的文本返回错误信息。

错误信息格式如下：

“vendor”“ODBC-component”“data-source”message-text

其中，角括号 (“ ”) 中字符串的前缀可识别错误的位置。当错误发生在驱动程序管理器中时，不会给出 data-source。当错误发生在数据源中时，“vender” 和 (ODBC-component) 前缀可识别销售商和从数据源收到错误的 ODBC 部件的名称。

下表说明驱动程序管理器和驱动程序 ISAM 返回的错误信息：

错误信息	错误地点
“Microsoft”“ODBC Driver Manager” message-text	驱动程序管理器  (ODBC32.DLL)
“Microsoft”“ODBC driver-name” message-text	驱动程序 ISAM （参阅驱动程序 ISAM 表）


SQLGetInfo 返回值（过程设计）

下表列出对于 fInfoType 自变量的 C-语言 #define 和 SQLGetInfo 返回的对应值。将表中列出的 C-语言 #define 发送到 fInfoType 自变量中的 SQLGetInfo，就可获取此信息。SQLGetInfo 返回 32 位的位屏蔽，竖杠 (|) 代表位 OR。若需更多关于 SQLGetInfo 返回值的信息，参阅《Microsoft ODBC SDK 程序员参考手册 2.0 版》。

SQL_ACCESSIBLE_PROCEDURES

SQL_ACCESSIBLE_TABLES

SQL_ACTIVE_CONNECTIONS

SQL_ACTIVE_STATEMENTS

SQL_ALTER_TABLE

SQL_BOOKMARK_PERSISTENCE

SQL_COLUMN_ALIAS

SQL_CONCAT_NULL_BEHAVIOR

SQL_CONVERT_BIGINT

SQL_CONVERT_BINARY

SQL_CONVERT_BIT

SQL_CONVERT_CHAR

SQL_CONVERT_DATE

SQL_CONVERT_DECIMAL

SQL_CONVERT_DOUBLE

SQL_CONVERT_FLOAT

SQL_CONVERT_FUNCTIONS

SQL_CONVERT_INTEGER

SQL_CONVERT_LONGVARBINARY

SQL_CONVERT_LONGVARCHAR

SQL_CONVERT_NUMERIC

SQL_CONVERT_REAL

SQL_CONVERT_SMALLINT

SQL_CONVERT_TIME

SQL_CONVERT_TIMESTAMP

SQL_CONVERT_TINYINT

SQL_CONVERT_VARBINARY

SQL_CONVERT_VARCHAR

SQL_CORRELATION_NAME

SQL_CURSOR_COMMIT_BEHAVIOR

SQL_CURSOR_ROLLBACK_BEHAVIOR

SQL_DATA_SOURCE_NAME

SQL_DATA_SOURCE_READ_ONLY

SQL_DATABASE_NAME

SQL_DBMS_NAME

SQL_DBMS_VER

SQL_DEFAULT_TXN_ISOLATION

SQL_DRIVER_HDBC

SQL_DRIVER_HENV

SQL_DRIVER_HLIB

SQL_DRIVER_HSTMT

SQL_DRIVER_NAME

SQL_DRIVER_ODBC_VER

SQL_DRIVER_VER

SQL_EXPRESSIONS_IN_ORDERBY

SQL_FETCH_DIRECTION

SQL_FILE_USAGE

SQL_GETDATA_EXTENSIONS

SQL_GROUP_BY

SQL_IDENTIFIER_CASE

SQL_IDENTIFIER_QUOTE_CHAR

SQL_KEYWORDS

SQL_LIKE_ESCAPE_CLAUSE

SQL_LOCK_TYPES

SQL_MAX_BINARY_LITERAL_LEN

SQL_MAX_CHAR_LITERAL_LEN

SQL_MAX_COLUMN_NAME_LEN

SQL_MAX_COLUMNS_IN_GROUP_BY

SQL_MAX_COLUMNS_IN_INDEX

SQL_MAX_COLUMNS_IN_ORDER_BY

SQL_MAX_COLUMNS_IN_SELECT

SQL_MAX_COLUMNS_IN_TABLE

SQL_MAX_CURSOR_NAME_LEN

SQL_MAX_INDEX_SIZE

SQL_MAX_OWNER_NAME_LEN

SQL_MAX_PROCEDURE_NAME_LEN

SQL_MAX_QUALIFIER_NAME_LEN

SQL_MAX_ROW_SIZE

SQL_MAX_ROW_SIZE_INCLUDES_LONG

SQL_MAX_STATEMENT_LEN

SQL_MAX_TABLE_NAME_LEN

SQL_MAX_TABLES_IN_SELECT

SQL_MAX_USER_NAME_LEN

SQL_MULT_RESULT_SETS

SQL_MULTIPLE_ACTIVE_TXN

SQL_NEED_LONG_DATA_LEN

SQL_NON_NULLABLE_COLUMNS

SQL_NULL_COLLATION

SQL_NUMERIC_FUNCTIONS

SQL_ODBC_API_ CONFORMANCE

SQL_ODBC_SAG_CLI_ CONFORMANCE

SQL_ODBC_SQL_CONFORMANCE

SQL_ODBC_SQL_OPT_IEF

SQL_ODBC_VER

SQL_OJ_CAPABILITIES

SQL_ORDER_BY_COLUMNS_IN_SELECT

SQL_OUTER_JOINS

SQL_OWNER_TERM

SQL_OWNER_USAGE

SQL_POS_OPERATIONS

SQL_POSITIONED_STATEMENTS

SQL_PROCEDURE_TERM

SQL_PROCEDURES

SQL_QUALIFIER_LOCATION

SQL_QUALIFIER_NAME_SEPARATOR

SQL_QUALIFIER_TERM

SQL_QUALIFIER_USAGE

SQL_QUOTED_IDENTIFIER_CASE

SQL_ROW_UPDATES

SQL_SCROLL_CONCURRENCY

SQL_SCROLL_OPTIONS

SQL_SEARCH_PATTERN_ESCAPE

SQL_SERVER_NAME

SQL_SPECIAL_CHARACTERS

SQL_STATIC_SENSITIVITY

SQL_STRING_FUNCTIONS

SQL_SUBQUERIES

SQL_SYSTEM_FUNCTIONS

SQL_TABLE_TERM

SQL_TIMEDATE_ADD_INTERVALS

SQL_TIMEDATE_DIFF_INTERVALS

SQL_TIMEDATE_FUNCTIONS

SQL_TXN_CAPABLE

SQL_TXN_ISOLATION_OPTION

SQL_UNION

SQL_USER_NAME


SQL_ACCESSIBLE_PROCEDURES

"Y"
(Microsoft Access)

"N"
（dBASE、Microsoft Excel、Microsoft FoxPro、Paradox、Text）


SQL_ACCESSIBLE_TABLES

"Y"


SQL_ACTIVE_CONNECTIONS

64


SQL_ACTIVE_STATEMENTS

0


SQL_ALTER_TABLE

SQL_AT_ADD_COLUMN |
SQL_AT_DROP_COLUMN
(Microsoft Access、dBASE、Microsoft FoxPro、Paradox)

0
（Microsoft Excel、Text）


SQL_BOOKMARK_PERSISTENCE

SQL_BP_SCROLL |
SQL_BP_UPDATE (1)

1 书签在交付 (commit) 之后仍然存在，但在反转 (rollback) 之后不存在。


SQL_COLUMN_ALIAS

"Y"


SQL_CONCAT_NULL_BEHAVIOR

SQL_CB_NON_NULL


SQL_CONVERT_BIGINT

0


SQL_CONVERT_BINARY

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_BIT

0


SQL_CONVERT_CHAR

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_DATE

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_DECIMAL

0


SQL_CONVERT_DOUBLE

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_FLOAT

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_FUNCTIONS

SQL_FN_CVT_CONVERT


SQL_CONVERT_INTEGER

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_LONGVARBINARY

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_LONGVARCHAR

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_NUMERIC

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_REAL

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_SMALLINT

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_TIME

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_TIMESTAMP

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_TINYINT

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_VARBINARY

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CONVERT_VARCHAR

SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
SQL_CVT_INTEGER |
SQL_CVT_NUMERIC |
SQL_CVT_REAL |
SQL_CVT_SMALLINT |
SQL_CVT_VARCHAR


SQL_CORRELATION_NAME

SQL_CN_DIFFERENT


SQL_CURSOR_COMMIT_BEHAVIOR

SQL_CB_CLOSE


SQL_CURSOR_ROLLBACK_BEHAVIOR

SQL_CB_CLOSE


SQL_DATA_SOURCE_NAME

来自 ODBC.INI 的 DSN，而如果 DRIVER 关键字用于 ODBC.INI 中，则为 ""。


SQL_DATA_SOURCE_READ_ONLY

"N"
(Microsoft Access、dBASE、Microsoft FoxPro、Paradox)

"Y"
(Microsoft Excel、Text)


SQL_DATABASE_NAME

文件名 (Microsoft Access、Microsoft Excel 5.0/7.0//97)

当前数据库目录 (dBASE、Microsoft Excel 3.0/4.0、Microsoft FoxPro、Paradox、Text)


SQL_DBMS_NAME

"ACCESS"  (Microsoft Access)
"DBASE"  (dBASE)
"EXCEL"  (Microsoft Excel)
"FOXPRO"  (Microsoft FoxPro)
"PARADOX"  (Paradox)
"Text"  (Text)


SQL_DBMS_VER

"1.0"、"1.1"、"2.0" 或 "3.0"  (Microsoft Access)

（在 Microsoft Access 3.0、7.0和 97 版中，数据格式无区别）

"3.0"、"4.0" 或 "5.0"  (dBASE)
"3.0"、"4.0"、"5.0"、"7.0"或"97"  (Microsoft Excel)
"2.0"、"2.5" 或 "2.6"  (Microsoft FoxPro)
"3.x"、"4.x" 或 "5.x" (Paradox)
"1.0"  (Text)


SQL_DEFAULT_TXN_ISOLATION

SQL_TXN_READ_COMMITTED “ Microsoft Access”

0 “dBASE、Microsoft Excel、Microsoft FoxPro、Paradox、Text”


SQL_DRIVER_HDBC

由驱动程序管理器处理。


SQL_DRIVER_HENV

由驱动程序管理器处理。


SQL_DRIVER_HLIB

由驱动程序管理器处理。


SQL_DRIVER_HSTMT

由驱动程序管理器处理。


SQL_DRIVER_NAME

"ODBCJT32.DLL"


SQL_DRIVER_ODBC_VER

"2.50"


SQL_DRIVER_VER

"3.50.nnnn"（nnnn 为编译日期。）


SQL_EXPRESSIONS_IN_ORDERBY

"Y"


SQL_FETCH_DIRECTION

SQL_FD_FETCH_NEXT |
SQL_FD_FETCH_FIRST |
SQL_FD_FETCH_LAST |
SQL_FD_FETCH_PRIOR |
SQL_FD_FETCH_ABSOLUTE |
SQL_FD_FETCH_RELATIVE |
SQL_FD_FETCH_BOOKMARK


SQL_FILE_USAGE

SQL_FILE_QUALIFIER
（Microsoft Access、Microsoft Excel 5.0、7.0 或 97）

SQL_FILE_TABLE
（dBASE、Microsoft Excel 3.0 或 4.0、Microsoft FoxPro、Paradox、Text）


SQL_GETDATA_EXTENSIONS

SQL_GD_ANY_ORDER |
SQL_GD_ANY_COLUMN |
SQL_GD_BLOCK |
SQL_GD_BOUND


SQL_GROUP_BY

SQL_GB_GROUP_BY_CONTAINS_SELECT


SQL_IDENTIFIER_CASE

SQL_IC_MIXED
(Microsoft Access、Microsoft Excel、Microsoft FoxPro、Paradox、Text)

SQL_IC_UPPER (1)
(dBASE)

1按混合大小写返回量词，以确保 Windows NT 能找到目录。


SQL_IDENTIFIER_QUOTE_CHAR

"`"（右引号）


SQL_KEYWORDS

ALPHANUMERIC、 AUTOINCREMENT、 BINARY、 BOOLEAN、 BYTE、 COUNTER、 CURRENCY、 DATABASE、 DATABASENAME、 DATETIME、 DISALLOW、 DISTINCTROW、 DOUBLEFLOAT、 FLOAT4、 FLOAT8、 GENERAL、 IEEEDOUBLE、 IEEESINGLE、 IGNORE、 IMAGE、 INTEGER1、 INTEGER2、 INTEGER4、 LOGICAL、 LOGICAL1、 LONG、 LONGBINARY、 LONGCHAR、 LONGText、 MEMO、 MONEY、 NOTE、 NUMBER、 OLEOBJECT、 OWNERACCESS、 PARAMETERS、 PERCENT、 PIVOT、 SHORT、 SINGLE、       SINGLEFLOAT、 STDEV、 STDEVP、 STRING、 TABLEID、 Text、 TOP、 TRANSFORM、 UNSIGNEDBYTE、 VAR、 VARBINARY、 VARP、 YESNO


SQL_LIKE_ESCAPE_CLAUSE

"N"


SQL_LOCK_TYPES

SQL_LCK_NO_CHANGE


SQL_MAX_BINARY_LITERAL_LEN

255


SQL_MAX_CHAR_LITERAL_LEN

255  (Microsoft Access)
254  (dBASE)
255  （Microsoft Excel 3.0、4.0、5.0 或 7.0）
65535 (Microsoft Excel 97)
254  (Microsoft FoxPro)
255  (Paradox)
255  (Text)


SQL_MAX_COLUMN_NAME_LEN

64  (Microsoft Access)
10  (dBASE)
64  （Microsoft Excel 5.0、7.0 或 97）
30  （Microsoft Excel 3.0 或 4.0）
10  (Microsoft FoxPro)
25  (Paradox)
64  (Text)


SQL_MAX_COLUMNS_IN_GROUP_BY

10


SQL_MAX_COLUMNS_IN_INDEX

32  (Microsoft Access)
0  （未知限制或不可用）(dBase)
0  (Microsoft Excel)
0  （未知限制或不可用）( Microsoft FoxPro)
0  （未知限制或不可用）(Paradox)
0  (Text)


SQL_MAX_COLUMNS_IN_ORDER_BY

10


SQL_MAX_COLUMNS_IN_SELECT

255


SQL_MAX_COLUMNS_IN_TABLE

255

当使用 Microsoft Excel 驱动程序时，CREATE TABLE 语句可以允许 256 个列，但是 255 个列这一限制仍然有效，插入第 256 个列将会失败。


SQL_MAX_CURSOR_NAME_LEN

64


SQL_MAX_INDEX_SIZE

255  	(Microsoft Access)
220  	(dBASE)
0  	(Microsoft Excel)
512  	(Microsoft FoxPro)
1350  	(Paradox)
0  	(Text)


SQL_MAX_OWNER_NAME_LEN

0


SQL_MAX_PROCEDURE_NAME_LEN

64  (Microsoft Access)
0  (dBASE)
0  (Microsoft Excel)
0  (Microsoft FoxPro)
0  (Paradox)
0  (Text)


SQL_MAX_QUALIFIER_NAME_LEN

66


SQL_MAX_ROW_SIZE

2096  (Microsoft Access)
4000  (dBASE)
65535  (Microsoft Excel)
65500  （Microsoft FoxPro 2.5 及以上版本）
4000  (Microsoft FoxPro 2.0)
1350   (Paradox)
65535  (Text)


SQL_MAX_ROW_SIZE_INCLUDES_LONG

"N"  (Microsoft Access)
"N"  (dBASE)
"Y"  (Microsoft Excel)
"N"  (Microsoft FoxPro)
"N"  (Paradox)
"Y"  (Text)


SQL_MAX_STATEMENT_LEN

65000


SQL_MAX_TABLE_NAME_LEN

64  (Microsoft Access)
12  (dBASE)
31  （Microsoft Excel 5.0、7.0 或 97）
12 （Microsoft Excel 3.0 或 4.0)
12  (Microsoft FoxPro)
12  (Paradox)
12  (Text)


SQL_MAX_TABLES_IN_SELECT

16


SQL_MAX_USER_NAME_LEN

0


SQL_MULT_RESULT_SETS

"N"


SQL_MULTIPLE_ACTIVE_TXN

"Y"


SQL_NEED_LONG_DATA_LEN

"N"


SQL_NON_NULLABLE_COLUMNS

SQL_NNC_NON_NULL


SQL_NULL_COLLATION

SQL_NC_LOW


SQL_NUMERIC_FUNCTIONS

SQL_FN_NUM_ABS |
SQL_FN_NUM_ATAN |
SQL_FN_NUM_CEILING |
SQL_FN_NUM_COS |
SQL_FN_NUM_EXP |
SQL_FN_NUM_FLOOR |
SQL_FN_NUM_LOG |
SQL_FN_NUM_MOD |
SQL_FN_NUM_POWER |
SQL_FN_NUM_RAND |
SQL_FN_NUM_SIGN |
SQL_FN_NUM_SIN |
SQL_FN_NUM_SQRT |
SQL_FN_NUM_TAN


SQL_ODBC_API_CONFORMANCE

SQL_OAC_LEVEL1


SQL_ODBC_SAG_CLI_CONFORMANCE

SQL_OSCC_ COMPLIANT


SQL_ODBC_SQL_CONFORMANCE

SQL_OSC_MINIMUM


SQL_ODBC_SQL_OPT_IEF

"N"


SQL_ODBC_VER

从驱动程序管理器


SQL_OJ_CAPABILITIES

SQL_OJ_LEFT
SQL_OJ_RIGHT
SQL_OJ_NOT_ORDERED
SQL_OJ_INNER
SQL_OJ_ALL_COMPARISON_OPS


SQL_ORDER_BY_COLUMNS_IN_SELECT

"N"


SQL_OUTER_JOINS

"Y"


SQL_OWNER_TERM

""


SQL_OWNER_USAGE

0


SQL_POS_OPERATIONS

SQL_POS_POSITION |
SQL_POS_REFRESH |
SQL_POS_UPDATE |
SQL_POS_DELETE |
SQL_POS_ADD
(Microsoft Access、dBASE、Microsoft FoxPro、Paradox)

SQL_POS_POSITION |
SQL_POS_REFRESH
（Microsoft Excel、Text）


SQL_POSITIONED_STATEMENTS

0


SQL_PROCEDURE_TERM

"QUERY"
(Microsoft Access)

""
（dBASE、Microsoft Excel、Microsoft FoxPro、Paradox、Text）


SQL_PROCEDURES

"Y"
(Microsoft Access)

"N"
（dBASE、Microsoft Excel、Microsoft FoxPro、Paradox、 Text ）


SQL_QUALIFIER_LOCATION

SQL_QL_START


SQL_QUALIFIER_NAME_SEPARATOR

"."
（Microsoft Access、Microsoft Excel 5.0、7.0 或 97）

"\"
（dBASE、Microsoft Excel 3.0 或 4.0、Microsoft FoxPro、Paradox、Text）


SQL_QUALIFIER_TERM

"Database"  (Microsoft Access)
"Directory"  (dBASE)
"Workbook"  （Microsoft Excel 5.0、7.0 或 97）/
"Directory"  （Microsoft Excel 3.0 或 4.0）
"Directory"  (Microsoft FoxPro)
"Directory"  (Paradox)
"Directory"  （Text）


SQL_QUALIFIER_USAGE

SQL_QU_DML_STATEMENTS |
SQL_QU_TABLE_DEFINITION |
SQL_QU_INDEX_DEFINITION |
SQL_QU_PROCEDURE_INVOCATION
(Microsoft Access)

SQL_QU_DML_STATEMENTS |
SQL_QU_TABLE_DEFINITION |
SQL_QU_INDEX_DEFINITION
(dBASE、Microsoft FoxPro、Paradox)

SQL_QU_DML_STATEMENTS |
SQL_QU_TABLE_DEFINITION
（Microsoft Excel、Text）


SQL_QUOTED_IDENTIFIER_CASE

SQL_IC_MIXED


SQL_ROW_UPDATES

"N"


SQL_SCROLL_CONCURRENCY

SQL_SCCO_READ_ONLY |
SQL_SCCO_LOCK |
SQL_SCCO_OPT_VALUES
(Microsoft Access、dBASE、Microsoft FoxPro、Paradox)

SQL_SCCO_READ_ONLY
（Microsoft Excel、Text）


SQL_SCROLL_OPTIONS

SQL_SO_FORWARD_ONLY |
SQL_SO_STATIC |
SQL_SO_KEYSET_DRIVEN


SQL_SEARCH_PATTERN_ESCAPE

"\"


SQL_SERVER_NAME

"ACCESS"  (Microsoft Access)
"DBASE"  (dBASE)
"EXCEL"  (Microsoft Excel)
"FOXPRO"  (Microsoft FoxPro)
"PARADOX"  (Paradox)
"Text"  (Text)


SQL_SPECIAL_CHARACTERS

"~`@#$%^&*_-+=\}{”';:?/><,.!'“”|"


SQL_STATIC_SENSITIVITY

SQL_SS_ADDITIONS |
SQL_SS_DELETIONS |
SQL_SS_UPDATES


SQL_STRING_FUNCTIONS

SQL_FN_STR_ASCII |
SQL_FN_STR_CHAR |
SQL_FN_STR_CONCAT |
SQL_FN_STR_LCASE |
SQL_FN_STR_LEFT |
SQL_FN_STR_LENGTH |
SQL_FN_STR_LOCATE |
SQL_FN_STR_LOCATE_2
SQL_FN_STR_LTRIM |
SQL_FN_STR_RIGHT |
SQL_FN_STR_RTRIM |
SQL_FN_STR_SPACE |
SQL_FN_STR_SUBSTRING |
SQL_FN_STR_UCASE


SQL_SUBQUERIES

SQL_SQ_COMPARISON |
SQL_SQ_EXISTS |
SQL_SQ_IN |
SQL_SQ_QUANTIFIED |
SQL_SQ_CORRELATED_SUBQUERIES


SQL_SYSTEM_FUNCTIONS

0


SQL_TABLE_TERM

"TABLE"


SQL_TIMEDATE_ADD_INTERVALS

0


SQL_TIMEDATE_DIFF_INTERVALS

0


SQL_TIMEDATE_FUNCTIONS

SQL_FN_TD_CURDATE |
SQL_FN_TD_CURTIME |
SQL_FN_TD_DAYOFMONTH |
SQL_FN_TD_DAYOFWEEK |
SQL_FN_TD_DAYOFYEAR |
SQL_FN_TD_HOUR |
SQL_FN_TD_MINUTE |
SQL_FN_TD_MONTH |
SQL_FN_TD_NOW |
SQL_FN_TD_SECOND |
SQL_FN_TD_WEEK |
SQL_FN_TD_YEAR
（Microsoft Access、Microsoft Excel、Text）

SQL_FN_TD_DAYOFMONTH |
SQL_FN_TD_DAYOFWEEK |
SQL_FN_TD_DAYOFYEAR |
SQL_FN_TD_HOUR |
SQL_FN_TD_MINUTE |
SQL_FN_TD_MONTH |
SQL_FN_TD_SECOND |
SQL_FN_TD_WEEK |
SQL_FN_TD_YEAR
(dBASE、Microsoft FoxPro、Paradox)


SQL_TXN_CAPABLE

SQL_TC_ALL
(Microsoft Access)

SQL_TC_NONE
（dBASE、Microsoft Excel、Microsoft FoxPro、Paradox、Text）


SQL_TXN_ISOLATION_OPTION

SQL_TXN_READ_COMMITTED
(Microsoft Access)

0
（dBASE、Microsoft Excel、Microsoft FoxPro、Paradox、Text）


SQL_UNION

SQL_U_UNION_ALL |
SQL_U_UNION


SQL_USER_NAME

不支持


支持 ODBC API 函数（功能)

Microsoft ODBC 驱动程序支持所有核心及第一层函数和下列第二层函数：

•	SQLDataSources

•	SQLDrivers

•	SQLExtendedFetch

•	SQLMoreResults

•	SQLNativeSQL

•	SQLNumParams

•	SQLProcedures

•	SQLProcedureColumns

•	SQLSetPos

•	SQLSetScrollOptions


SQLBindParameter

当使用 Microsoft Excel 驱动程序，并执行 INSERT 语句，使用参数将 NULL 插入到 SQL_CHAR 列时，将返回 SQL_SUCCESS_WITH_INFO 与 SQLSTATE 01004、“数据被截断”。


SQLColAttributes

属性	注释
SQL_COLUMN_DISPLAY_SIZE	对于 LONGVARBINARY 数据，SQL_COLUMN_DISPLAY_SIZE 是列的最大长度，而不是列的最大长度乘以 2。
SQL_COLUMN_MONEY	对于 Paradox 的 CURRENCY 数据类型的列，会返回FALSE，而 Paradox 的 CURRENCY 数据类型映射到 ODBC SQL 的 SQL_DOUBLE 数据类型。
SQL_OWNER_NAME	因为不支持拥有者姓名，所以将空串 ("") 返回到此列中。
SQL_QUALIFIER_NAME	对于 Microsoft Access，返回数据库文件的路径；对于 dBASE、Microsoft Excel、Microsoft FoxPro、Paradox 或 Text，返回目录的路径。
SQL_COLUMN_SEARCHABLE	报告 LONGVARBINARY 和 LONGVARCHAR 列为 SQL_UNSEARCHABLE。 即使 LONGVARBINARY 和 LONGVARCHAR 不可搜索，固定长度和可变长度的二进制和字符数据类型还是可搜索的。
注意   以上列表并未完整列出 SQLColAttributes 所返回的属性。


SQLColumns

列	注释
TABLE_QUALIFIER	对于 Microsoft Access，返回数据库文件的路径；对于 dBASE、Microsoft Excel、Microsoft FoxPro、Paradox 或 Text，返回目录的路径。
TABLE_OWNER	因为不支持拥有者姓名，将 NULL 返回到此列中。
NULLABLE	对于属于主键或唯一索引的列，返回 SQL_NO_NULLS。


SQLConfigDataSource

请参阅

 SQLConfigDataSource 函数被用于动态地添加、修改或删除数据源，该函数使用下列关键字。

关键字	描述
CHARACTERSET	对于 Text 驱动程序，OEM 或 ANSI。
COLLATINGSEQUENCE	字段排序的顺序。 当使用 dBASE 或 Microsoft FoxPro 驱动程序时，顺序可以是：ASCII（默认值）或 International。 当使用 Paradox 驱动程序时，顺序可以是：ASCII   （默认值）、International、Swedish-Finnish 或 Norwegian-Danish。 这将设置与“设置”对话框的“排序顺序”控件相同的选项。
COLNAMEHEADER	对于 Text 驱动程序，指出数据的第一个记录是否将指定列名。TRUE 或 FALSE。
COMPACT_DB	对于 Microsoft Access 驱动程序，在数据库文件上执行数据库压缩。
CREATE_DB	对于 Microsoft Access 驱动程序，创建数据库文件。有下列格式：CREATE_DB=<path-name><optional-sort-order>，其中路径名是指到 Microsoft Access 数据库的完整路径。如果路径名指到现有数据库，则将返回错误。排序顺序如“添加数据库”对话框中所设置，且在按下“Microsoft Access 安装”对话框的“创建”按钮时显示此对话框会。如果没有指定排序顺序，则使用 General。 当使用 CREATE_DB 关键字时，如果要创建的 Microsoft Access 数据库的路径名称包含一个或一个以上的空格，则必须将整个路径名称用双引号括起来，如下列示例显示： �C:\PROGRAM FILES\COMMON FILES\ MyAccess.mdb� �C:\PROGRAM FILES\Access2.mdb� CREATE_DB=C:\TEMP\test.mdb（不需要双引号）
CREATE_SYSDB	对于 Microsoft Access 驱动程序，创建系统数据库文件。文件有下列格式：CREATE_SYSDB=<path-name><optional-sort-order>，其中路径名称是指向 Microsoft Access 数据库的完整路径。如果路径名称指向现有数据库，则将返回错误。排序顺序将如“添加数据库”对话框中所设置，且在按下“Microsoft Access 安装”对话框的“创建”按钮时显示此对话框会。如果没有指定排序顺序，则使用 General。
CREATE_V2DB	对于 Microsoft Access 驱动程序，创建与 Microsoft Access 2.0 兼容的数据库文件。文件有下列格式：CREATE_V2DB=<path-name><optional-sort-order>，其中路径名称是指向 Microsoft Access 数据库的完整路径。如果路径名称指向现有数据库，则将返回错误。排序顺序将如“添加数据库”对话框中所设置，且在按下“Microsoft Access 安装”对话框的“创建”按钮时显示此对话框会。如果没有指定排序顺序，则使用 General。 当使用 CREATE_V2DB 关键字时，如果要创建的 Microsoft Access 数据库的路径名称包含一个或一个以上的空格，则必须用双引号将整个路径名称括起来，如下列示例显示： �C:\PROGRAM FILES\COMMON FILES\ MyAccess.mdb� �C:\PROGRAM FILES\Access2.mdb� CREATE_V2DB=C:\TEMP\test.mdb（不需要双引号）
DBQ	对于 Microsoft Access 或 Paradox 驱动程序，数据库文件的名称。 对于 Microsoft Excel 驱动程序，当访问   Microsoft Excel 5.0、7.0 或 97 的文件时，工作簿文件的名称。 这就设置了与“设置”对话框的“数据库”控件相同的选项。
DEFAULTDIR	指向数据库文件（对于 Microsoft Access 驱动程序）或目录（对于 dBASE、Microsoft Excel、Microsoft FoxPro、Paradox 或 Text 驱动程序）的路径设置。 这就设置了与“设置”对话框的“选择目录”控件，或对于 Microsoft Excel，“设置”对话框的“选择工作簿”控件相同的选项。
DELETED	对于 dBASE 或 Microsoft FoxPro 驱动程序，指定是否可以获取或定位已标示为被删除的行。如果设置成 1，则不显示被删除的行；如果设置成 0，则把已删除的行当作未删除的行。默认值是 不选定。 这就设置了与“设置”对话框的“显示删除列”控件相同的选项。
DESCRIPTION	数据源中数据的描述。 这就设置了与“设置”对话框的“描述”控件相同的选项。
DRIVER	指向驱动程序 DLL 的路径说明。
DRIVERID	对于驱动程序的整型标识符。   25 (Microsoft Access)    21 (dBASE III)    277 (dBASE IV)   533 (dBASE 5.0)   534 (Microsoft Excel 3.0)   278 (Microsoft Excel 4.0)   22 (Microsoft Excel 5.0/7.0)   790 (Microsoft Excel 97)   24 (Microsoft FoxPro 2.0)   280 (Microsoft FoxPro 2.5)   536 (Microsoft FoxPro 2.6)   26 (Paradox 3.x)   282 (Paradox 4.x)   538 (Paradox 5.x)   27(Text)
EXCLUSIVE	决定数据库将以独占方式（一次只有一个用户访问）或分享方式（一次有多个用户访问）打开。可以是 TRUE（独占方式）或 FALSE（分享方式）。（这不会应用到 Microsoft Excel 或 Text 驱动程序）。 这就设置了与“设置”对话框的“独占方式”控件相同的选项。
EXTENSIONS	列出在数据源上文本文件的文件名的文件扩展名。 这就设置了与“设置”对话框的“文件类型”控件相同的选项。
FIL	文件类型    MS Access 表示 Microsoft Access    dBase III、dBase IV 或 dBase 5    EXCEL 3.0、4.0、5.0、7.0 或 97 表示 Microsoft Excel    FoxPro 2.0、2.5 或 2.6 表示 Microsoft FoxPro    Paradox 3.x、4.x 或 5.x)    文本。
FILETYPE	对于 Text 驱动程序（文本）的文件类型。
FIRSTROWHASNAMES	对于 Microsoft Excel 驱动程序，指出范围中第一行的单元格包含了表的列名 (1) 还是没有包含 (0)。
FORMAT	对于 Text 驱动程序，可以是 FIXEDLENGTH、TABDELIMITED、CSVDELIMITED（用逗点分隔）或DELIMITED ( )（用括号中指定的特殊字符分隔）。特殊字符是长度为 1 的字符，并且可以是字符、十进制或十六进制格式。
IMPLICITCOMMITSYNC	决定 Microsoft Access 驱动程序是否将异步执行内部或隐含提交。最初将此值设置成“是” Microsoft Access 驱动程序将等待提交要完成的内部/隐含事务。 未经仔细考虑，不应更改此选项的值。若需更多关于此选项的信息，参阅 Microsoft Jet 数据库引擎程序员指南。 这就设置了与“设置”对话框的 ImplicitCommitSync 控件相同的选项。
MAXBUFFERSIZE	Microsoft Access 用来与磁盘传送数据的内部缓冲区大小，以 KB 为单位。默认缓冲区大小是 512K（显示为 512）。可用任何被 256 整除的整型值。这就设置了与“设置”对话框的“缓冲区大小”控件相同的选项。
MAXSCANROWS	对于 Microsoft Access、Microsoft Excel 或 Text 驱动程序，在根据现有数据来设置列的数据类型时，所扫描的行数。 可以输入由 1 到 16 的数字作为扫描的行数。默认值为 8；如果将它设置成 0，则扫描全部行。（越界的数字将返回错误）。 对于 Text 驱动程序，可输入由 1 到 32767 的数字为扫描的行数；不过，默认值总是 25。（越界的数字将返回错误）。 这就设置了与“设置”对话框的“扫描”控件相同的选项。
PAGETIMEOUT	指定在删除一页之前，这一页（如果不使用）保持在缓冲区中的时间，以十分之一秒为单位。对于 Microsoft Access 驱动程序，默认值是 5 个十分之一秒（0.5 秒）。对于    dBASE、Microsoft FoxPro 和 Paradox 驱动程序，默认值是 600 个十分之一秒（60 秒）。注意,此选项应用于所有使用 ODBC 驱动程序的数据源。 这就设置了与“设置”对话框的“页超时”控件相同的选项。
PARADOXNETPATH	对于 Paradox 驱动程序，包含 Paradox 锁定数据库的目录的完整路径，因为它包含 PDOXUSRS.net 文件 (Paradox 4.x) 或 PARADOX.net 文件 (Paradox 5.x)。如果其中一个文件未包含在目录中，Paradox 驱动程序将创建一个。有关这些文件的信息，请参阅 Paradox 文档。 在可以选定网络目录之前，必须输入 Paradox 用户名称。 这就设置了与 Paradox“设置”对话框的“选定网络目录”控件相同的选项。
PARADOXNETSTYLE	对于 Paradox 驱动程序，访问 Paradox 数据时所使用的网络访问样式：“3.x”表示 Paradox 3.x 或“4.x”表示 Paradox 4.x 或 5.x。如果版本是 Paradox 4.x 或 5.x，可以设置成“3.x”或“4.x”；如果版本是 Paradox 3.x，样式必须是“3.x”。 这就设置了与 Paradox“设置”对话框的“网络样式”控件相同的选项。
PARADOXUSERNAME	对于 Paradox 驱动程序，Paradox 用户名称。 这就设置了与 Paradox“设置”对话框的“用户名称”控件相同的选项。
PWD	对于 Microsoft Access 或 Paradox 驱动程序，口令。 对于 Paradox 驱动程序，这是可选的关键字，而且驱动程序不会将它写到文件中。用它调用 SQLDriverConnect，与有口令安全的 Paradox 文件相对。
READONLY	TRUE 使文件为只读；FALSE 使文件不是只读。 这就设置了与“设置”对话框的“只读”控件相同的选项。
REPAIR_DB	对于 Microsoft Access 驱动程序，在提交进程期间失败而损害的数据库修复。
STATISTICS	对于 dBASE 或 Microsoft FoxPro 驱动程序，决定表大小的统计是否为近似值。注意，此选项应用于所有使用 ODBC 驱动程序的数据源。 这就设置了与“设置”对话框的“近似（行）计数”控件相同的选项。
SYSTEMDB	对于 Microsoft Access 驱动程序，指向系统数据库文件的路径规范。 这就设置了与“设置”对话框的“系统信息库”控件相同的选项。
THREADS	数据库引擎用到的背景线程（thread）的数目。对于 Microsoft Access 驱动程序，默认值为 3，但可以更改。对于 dBASE、Microsoft Excel、Microsoft FoxPro、Paradox 和 Text 驱动程序，此值是 3，但不能更改。 这就设置了与“设置”对话框的“线程”控件相同的选项。
UID	对于 Microsoft Access 驱动程序，用于登录的用户 ID名称。
USERCOMMITSYNC	决定 Microsoft Access 驱动程序是否将异步执行用户定义的事务。最初将此值设置成 "Yes"，表示 Microsoft Access 驱动程序将等待提交已完成的用户定义的事务。 不应轻率更改此选项的值。若需更多关于此选项的信息，参阅 Microsoft Jet 数据库引擎程序员指南。 这就设置了与“设置”对话框的 UserCommitSync 控件相同的选项。


SQLDriverConnect

请参阅

有了 SQLDriverConnect ，不需创建数据源 (DSN) 就可以连接到驱动程序。

对所有驱动程序，在连接串中支持下列关键字：DSN、DBQ和 FIL。

对于 Microsoft Access 驱动程序，还支持 UID 和 PWD 关键字。对于 Paradox 驱动程序，还支持 PWD 关键字。

当使用 Microsoft Access 或 Paradox 驱动程序时，PWD 关键字不应包含任何特殊字符（参阅 SQLGetInfo 返回值中的 SQL_SPECIAL_CHARACTERS)。

当使用 Paradox 驱动程序时，在用户打开口令保护的文件之后，其它用户不得打开相同的文件。

下表说明需要连接到每一驱动程序的最低限度的关键字，并提供与 SQLDriverConnect 一起使用的关键字／值的示例。有关 DRIVERID 值的完整列表，参阅 SQLConfigDataSource。

注意   如果未对 dBASE、Microsoft Excel 3.0/4.0、Microsoft FoxPro、Paradox 或 Text 驱动程序指定 DBQ 或 DefaultDir，则驱动程序将连接到当前目录。

驱动程序	需要的关键字	示例
Microsoft Access	Driver、DBQ	Driver={ Microsoft Access Driver  (*.MDB)}; DBQ=c:\temp\sample.MDB
dBASE	Driver、DriverID	Driver={ Microsoft dBASE Driver (*.dbf)}; DBQ=c:\temp; DriverID=277
Microsoft Excel 3.0 或 4.0	Driver、DriverID	Driver={ Microsoft Excel Driver (*.xls)}; DBQ=c:\temp; DriverID=278
Microsoft Excel 5.0/7.0	Driver、DriverID、 DBQ	Driver={ Microsoft Excel Driver (*.xls)}; DBQ=c:\temp\sample.xls; DriverID=22
Microsoft Excel 97	Driver、DriverID、 DBQ	Driver={ Microsoft Excel Driver (*.xls)}; DBQ=c:\temp\sample.xls; DriverID=790
Microsoft FoxPro	Driver、DriverID	Driver={ Microsoft FoxPro Driver (*.dbf)}; DBQ=c:\temp;DriverID=536
Paradox	Driver、DriverID	Driver={ Microsoft Paradox Driver (*.db )}; DBQ=c:\temp;DriverID=26
Text	Driver	Driver={ Microsoft Text Driver (*.txt;*.csv)}; DefaultDir=c:\temp


SQLGetCursorName

支持 SQLGetCursorName，但是只有在使用游标库时才能使用它，因为在驱动程序中不支持定位运算。


SQLGetData

此函数能从任何列获取数据，不论在它之后是否有绑定的列，也不管获取列的顺序如何。


SQLGetInfo

SQLGetInfo 支持 SQL_FILE_USAGE 信息类型。返回值是 16 位的整型，且该整型指出驱动程序如何直接处理数据源中的文件：

SQL_FILE_NOT_SUPPORTED = 驱动程序不是单层的驱动程序。

SQL_FILE_TABLE = 单层的驱动程序将数据源中的文件当作表。

SQL_FILE_QUALIFIER = 单层的驱动程序将数据源中的文件当作限定符。

对于 Microsoft Access 驱动程序，因为每个文件都是完整的数据库，所以 ODBC 驱动程序返回 SQL_FILE_QUALIFIER。对于 dBASE、Microsoft Excel、Microsoft FoxPro、Paradox 或 Text 驱动程序，因为每个文件是表，所以 ODBC 驱动程序返回 SQL_FILE_TABLE。


SQLGetStmtOption

只有在打开查询时，由 SQL_GETBOOKMARK 的 fOption 返回的书签才是有效的，而且在重新查询时，书签无效。不支持持久书签。


SQLGetTypeInfo

在 SQLGetTypeInfo 生成的表中返回的类型 (TYPE_NAME) 名称将是数据源最常用的名称。

对于 Byte、Counter、Double、Single、Long 和 Short 数据类型，将在 SEARCHABLE 列中返回 SQL_ALL_EXCEPT_LIKE（用 ODBC 正规转换函数将值转换成字符，然后执行比较，由此就可获得 LIKE 功能）。

当使用 Microsoft Excel 驱动程序时，在 TYPE_NAME 列中返回 ODBC 类型名称，而 TYPE_NAME 又是 SQLGetTypeInfo 返回的。

使用 Text 驱动程序时，当数据类型实际上是区分大小写时，对于文本数据类型 （CHAR 和LONGCHAR），SQLGetTypeInfo 返回 FALSE 的CASE_SENSITIVE 值。


SQLMoreResults

此函数总是返回 SQL_NO_DATA_FOUND。


SQLPrepare

在执行时，如果列数不正确，则这些列准备的语句将返回错误，而不是在语句准备期间返回错误。


SQLProcedureColumns

只支持 Microsoft Access DSN。

应用程序开发人员应该从结果集的末端出发来查找驱动程序定义的列，并且由后向前进行。

列	注释
COLUMN_TYPE	SQL_PARAM_INPUT 或 SQL_RESULT_COL
ORDINAL	这是驱动程序特定的列，它是从结果集的末端返回的列。列的 SQL 类型是整型。


SQLProcedures

SQLProcedures 将只对那些至少有一个自变量的过程返回行。将那些没有自变量的过程看作 view。

列	注释
PROCEDURE_QUALIFIER	指向数据库文件的路径。
PROCEDURE_OWNER	NULL
PROCEDURE_NAME	未分隔的过程名称。
PROCEDURE_TYPE	SQL_PT_PROCEDURE


SQLSetConnectOption

fOption	注释
SQL_ACCESS_MODE	可将 SQL_ACCESS_MODE fOption 设置成 SQL_MODE_READ_ONLY 或 SQL_MODE_READ_WRTE。但是，如果将 SQL_ACCESS_MODE 设置成 SQL_MODE_READ_ONLY，则驱动程序不能防止更新。
SQL_AUTOCOMMIT	当使用 Microsoft Access 驱动程序时，可将 SQL_AUTOCOMMIT 选项设置成 SQL_AUTOCOMMIT_ON 或 SQL_AUTOCOMMIT_OFF，因为 Microsoft Access 驱动程序支持事务(1)。 dBASE、Microsoft Excel、Microsoft FoxPro、Paradox 和 Text 驱动程序只支持被设置成 ON（默认状态）的 SQL_AUTOCOMMIT，因为它们不支持事务。
SQL_CURRENT_QUALIFIER	支持。
SQL_LOGIN_TIMEOUT	不支持。
SQL_OPT_TRACE	支持。
SQL_OPT_TRACEFILE	支持。
SQL_PACKET_SIZE	不支持。
SQL_QUIET_MODE	不支持。
SQL_TRANSLATE_DLL	不支持。
SQL_TRANSLATION_OPTION	不支持。
SQL_TXN_ISOLATION	当使用 Microsoft Access 驱动程序时，SQL_TXN_ISOLATION 总是 SQL_TXN_READ_COMMITTED。其它驱动程序不支持此 fOption。
1	Microsoft Access 驱动程序不支持不可分解的事务。当使用 Microsoft Access 驱动程序提交事务时，在提交事务的时间与将数据写入磁盘的时间之间稍有延迟。此延迟由 Microsoft Jet 引擎内部的延迟确定。页超时将不会小于最小值，即使    “页超时” 选项设置比该延迟还小。结果就不能保证提交的数据是稳定的，因为在延迟期间可能会发生更改。


SQLSetCursorName

因为驱动程序不支持由 WHERE CURRENT OF cursorname 语法进行的定位更新或删除，虽然驱动程序支持 SQLSetCursorName，但是不能用来做定位更新。只有在游标库有效且应用程序正在使用 SQLExtendedFetch 时才能使用它。


SQLSetPos

对 SQLSetPos 调用支持成批模式语义，调用的 irow 自变量等于 0。

对于 fLock，支持 SQL_LOCK_NO_CHANGE。不支持 SQL_LOCK_EXCLUSIVE 和 SQL_LOCK_UNLOCK。

SQLSetPos 支持可更新的联结。（若需更多信息，参阅《Microsoft Jet 数据库引擎程序员指南》）。


SQLSetScrollOptions

对于 SQL_CONCUR_READ_ONLY，支持向前和静态的游标。

对于 SQL_CONCUR_LOCK 的 fConcurrency 自变量，只支持键集驱动的游标。

不支持 SQL_CONCUR_ROWVER 的 fConcurrency 自变量。

不支持动态游标和混合游标。


SQLSetStmtOption

fOption	注释
SQL_ASYNC_ENABLE	不支持异步处理。SQL_ASYNC_ENABLE fOption 将返回 SQLSTATE S1C00（驱动程序无此功能）。
SQL_KEYSET_SIZE	因为不支持混合游标和动态游标，所以唯一有效的键集大小是 0。如果将此值设置成任何其它数字，则它将变成 0，而且此调用将返回 SQL_SUCCESS_WITH_INFO 和 SQLSTATE 01S02（选项值更改）。
SQL_MAX_ROWS	因为桌面数据库驱动程序不支持限制返回的行数，所以唯一有效的行集大小是 0。如果将此值设置成任何其它数字，则它将变成 0 并且此调用将返回 SQL_SUCCESS_WITH_INFO 和 SQLSTATE 01S02（选项值更改）。
SQL_QUERY_TIMEOUT	不支持。
SQL_ROW_NUMBER	不支持。
SQL_SIMULATE_CURSOR	不支持。


SQLSpecialColumns

对于 fColType 中的 SQL_BEST_ROWID 标志将返回唯一的索引（如果索引存在的话）。对于 SQL_ROWVER 标志，将不返回结果集。

所有行 ID 都有一定范围的 SQL_SCOPE_CURROW。

对于 szTableQualifier 或 szTableName 自变量，不支持模式匹配。


SQLStatistics

列	注释
TABLE_QUALIFIER	对于 Microsoft Access，返回指向数据库文件的路径；对于 dBASE、Microsoft Excel、Microsoft FoxPro、Paradox 或 Text，返回指向目录的路径。 在 szTableQualifier 自变量中，不支持模式匹配。
TABLE_OWNER	将 NULL 返回到此列中，因为不支持拥有者名称。
TABLE_NAME	未分隔的表名称。 在 szTableName 自变量中，不支持模式匹配。
INDEX_QUALIFIER	总是返回 NULL。
INDEX_NAME	索引相关的。
TYPE	对于 TYPE，只返回 SQL_TABLE_STAT 或 SQL_INDEX_OTHER。
SEQ_IN_INDEX	索引相关的。
COLUMN_NAME	索引相关的。
COLLATION	索引相关的。
CARDINALITY	只对 Microsoft Access 才返回。
PAGES	总是返回 NULL。
筛选以唯一性（fUnique 自变量）为基础。忽略 fAccuracy 参数。


SQLTables

自变量	注释
szTableOwner	szTableOwner 唯一有效的自变量是 Null，因为没有驱动程序支持拥有者名称。当把 szTableOwner 设置成 NULL 时返回所有表。在 TABLE_OWNER 列中返回 NULL。
szTableQualifier	当使用 Microsoft Excel 3.0 或 4.0 驱动程序时，如果用 szTableQualifier 的值调用 SQLTables，而 szTableQualifier 不是现有表的名称，则驱动程序将创建具有该名称的表。 在 TABLE_QUALIFIER 列中，SQLTables 将返回指向数据库文件的路径（对于 Microsoft Access 或 Microsoft Excel 5.0、7.0 或      97）或指向目录的路径（对于 dBASE、Microsoft Excel 3.0 或     4.0、Microsoft FoxPro、Paradox 或 Text）。
szTableType	在使用 Microsoft Access 驱动程序时，对于系统表的 szTableType，支持 "SYSTEM TABLE"，对于附加表，支持 "SYNONYM"，对于行返回查询，支持 "VIEW"。 对于 dBASE、Microsoft Excel 3.0 或 4.0、Microsoft FoxPro、Paradox 或 Text 文件，"TABLE" 是唯一获得支持的表类型。 对于 Microsoft Excel 5.0、7.0 或 97 的文件，对工作表名称返回 "SYSTEM TABLE"（末端有 "$" 的表），并在工作单中返回        "TABLE"。 当使用 Text 驱动程序时，在“ODBC 文本安装”对话框中，“扩展列表” 框中的文件扩展名决定 SQLTables 所返回的文件列表。


SQLTransact

当使用 Microsoft Access 驱动程序时，对 SQLTransact 调用中的 fType 自变量支持 SQL_COMMIT 和 SQL_ROLLBACK。

当使用 dBASE、Microsoft Excel、Microsoft FoxPro、Paradox 或 Text 驱动程序时，此函数支持 SQL_COMMIT，但不支持 SQL_ROLLBACK。

当使用 Microsoft Access 驱动程序时，如果在提交进程期间发生失败，则可用 Microsoft Access 驱动程序安装中的数据库修复选项修复受影响的数据库，或通过在 SQLConfigDataSource 函数中使用 REPAIR_DB 关键字来修复。


算术错误

每取得一行数据时，ODBC 驱动程序会计算 SELECT 语句中的 WHERE 子句。如果行含有会引起算术错误的值，例如被零除或数值上溢，则驱动程序返回所有行，但对有算术错误的列则返回错误。但是，在插入或更新并遇到第一个算术错误时，ODBC 驱动程序会停止插入或更新数据。


驱动程序的基础地址

每个 ODBC 桌面数据库驱动程序已经链接到基本地址 0x04c0000。


创建和打开表

当使用 Text 驱动程序时，系统会使用 ODBCINST.INI 中指定的格式创建新表。如果未指定，则用 CSVDELIMITED 格式创建表。根据默认：INTEGER 列默认为 11 个字符、FLOAT 列默认为 22 个字符。DATE 列使用 YYYY-MM-DD 格式、CHAR 和 LONGCHAR 列是由 CREATE 语句中指定的宽度。


多个 hstmts

当使用 ODBC Paradox 驱动程序时，如果要用多个 hstmt 来执行表上的查询，则表必须有唯一索引（Paradox 主键）。


只读状态

当使用 Microsoft Excel 或 Text 驱动程序时数据源表是只读的。不过即使表有只读状态，应用程序也可以对 Microsoft Excel 表执行插入和更新操作，或对文本表执行插入操作。

当应用程序通过 Microsoft Excel 驱动程序在 Microsoft Excel 数据中执行“另存为”命令时，应用程序应该创建新表并插入新表中存储的数据。插入的结果就是在表中作添加。直到关闭该表并重新打开之前都不能在表上执行其它操作。一旦关闭表后，由于表是只读的，任何后续的插入操作都不能执行。

使用 Microsoft Excel 驱动程序时可以更新值，但不能从基于 Microsoft Excel 电子数据表的表中删除行，所以，通常不认为 Microsoft Excel 驱动程序支持更新。


安装 DLL

当用户配置数据源时，ODBC 管理器调用函数 ConfigDSN。


转换 DLL

不支持。


简介

请参阅

Microsoft ODBC 桌面数据库驱动程序 3.5 允许通过开放式数据库连接 (ODBC) 接口打开和查询数据库。这些驱动程序可与 ODBC 2.5 一起工作，但是与 ODBC 3.0 包装在一起销售。该驱动程序是为了在 Microsoft Windows 95 或更新版本、或 Windows NT 3.51 或更新版本使用而设计的。Windows 95 或更新版本仅支持 32 位的应用程序；Windows NT 3.51 或更新版本支持 16 位和 32 位应用程序。

注意   若需有关配合这些驱动程序的 ODBC 版本的信息，请参阅 ODBC 2.0 Programmer's Reference 和 SDK Guide、和 ODBC 2.5 版的版本注意 ODBC 3.0 Programmer's Reference 不应用来当做这些驱动程序相关问题的参考资料。

ODBC 桌面数据库驱动程序包含 Microsoft Access、dBASE、Microsoft Excel、Microsoft FoxPro、Paradox、和文本的 32 位驱动程序。没有包含 16 位的驱动程序。（另有 Microsoft FoxPro 3.0 的驱动程序可供使用）。

Windows 95 或更新版本的应用程序/驱动程序结构为：

应用程序（32 位）
|
ODBC 驱动程序管理程序
(ODBC32. dll)
|
ODBC 桌面数据库驱动程序
（ODBCJT32. dll、MSJET35. dll、32 位驱动程序 ISAM）
|
数据库

不支持 Windows 95 上 16 位的应用程序使用这些驱动程序。

Windows NT 3.51 或更新版本的应用程序/驱动程序结构为：

应用程序（16 位）	     应用程序（32 位）

|	|
ODBC 驱动程序管理程序
(ODBC.dll)
|	|
16 位 ODBC Generic Thunking dll
(ODBC16GT.dll)
|	|
32 位 ODBC Generic Thunking dll
(ODBC32GT.dll)
|	|
ODBC 驱动程序管理程序
(ODBC32.dll)
|	|
ODBC 桌面数据库驱动程序
（ODBCJT32.dll、MSJET35.dll、32 位驱动程序 ISAM）

|
数据库


驱动程序 ISAM 文件

请参阅

ODBC 桌面数据库驱动程序 3.5 包含 ISAM 文件。如下列：

驱动程序	32 位 ISAM	版本
Microsoft Access	无（包含在 MSJET35.dll 中）	Microsoft Access 版本 7.0 和 97
Microsoft Access	MSRD2X35.dll	Microsoft Access 版本 1.0, 1.1, 2.0
dBase	MSXBSE35.dll	dBase 版本 III, IV, 和 V (dBASE for Windows)
Microsoft Excel	MSEXCL35.dll	Microsoft Excel 版本 3.0, 4.0, 5.0, 7.0, 97 (1)
Microsoft FoxPro	MSXBSE35.dll	Microsoft FoxPro 版本 2.0, 2.5, 2.6
Paradox	MSPDOX35.dll	Paradox 版本 3.5, 4.0, 4.5, 5.x (Paradox for Windows)
Text	MSTEXT35.dll	ASCII Text

1	Microsoft Excel 驱动程序不能读 3.0 版之前的文件格式。这些较早的文件可以用 Microsoft Excel 更新的版本打开，并且用驱动程序能读的 3.0、4.0、5.0、7.0、或 97 版的文件格式来保存。

Microsoft FoxPro 3.0

ODBC 桌面数据库驱动程序不包含 Microsoft FoxPro 3.0 的驱动程序，并且桌面数据库驱动程序不支持对 Microsoft FoxPro 3.0 文件的访问。应该用 Microsoft FoxPro 3.0 驱动程序来访问这些文件。


ODBC 部件文件

请参阅

下列表格列出 ODBC 桌面数据库驱动程序 3.5 版的每一部件所需的文件。这些文件安装在 Windows 95 或更新版本的 \Windows\System 目录，或 Windows NT 3.51 或更新版本的 \Windows\System32 目录。如果 ODBC 文件已预先安装在不同的目录之中，请确保使用在 \Windows\System（或 System32）目录下的较新文件。

某些文件是多个部件共同需要的。如果想将 ODBC 桌面数据库驱动程序与您的商业应用程序一起分布给用户，那么这些文件是最需要的。

下列文件是每一个 ODBC 桌面数据库驱动程序 3.5 版共同需要的：

DS16GT.dll DS32GT.dll MSJINT35.dll MSJET35.dll MSJTER35.dll MSVCRT40.dll ODBC16GT.dll ODBC32.dll ODBC32GT.dll ODBCCP32.cpl ODBCCP32.dll ODBCCR32.dll ODBCINST.cnt	ODBCINST.hlp ODBCINT.dll  ODBCJET.hlp ODBCJET.cnt ODBCJI32.dll ODBCJT32.dll ODBCJTNW.hlp ODBCJTNW.cnt ODBCTL32.dll VBAJET32.dll VBAR332.dll ODBCTRAC.dll ODBCTRAC.tlb
下列文件是每一个驱动程序所特有的：

驱动程序	文件
Microsoft Access	MSRD2X35.dll
dBASE	MSXBSE35. dll ODDBSE32.dll
Microsoft Excel	MSEXCL35.dll ODEXL32.dll
Microsoft FoxPro	MSXBSE35.dll ODFOX32.dll
Paradox	MSPDOX35.dll ODPDX32.dll
Text	MSText35.dll ODText32.dll


硬件和软件需求

硬件需求

若要使用 ODBC 桌面数据库驱动程序，必须具备：

•	IBM 兼容个人计算机。

•	有 6 MB 可用磁盘空间的硬盘。

•	至少 16 MB 的随机访问内存 (RAM)。

软件需求

若要用 ODBC 驱动程序访问数据，必须具备：

•	ODBC 驱动程序。

•	32 位的 ODBC 驱动程序管理程序，3.0 版或更新版本 (ODBC32.dll)。请注意此文件包含在 ODBC 桌面数据库驱动程序中。

•	Microsoft Windows 95 或更新版本、或 Windows NT 3.51 或更新版本。

•	对于使用 Microsoft ODBC 驱动程序的应用程序，堆栈大小应该至少有 20 K。

当使用 Microsoft Windows NT 3.51 或更新版本时，32 位驱动程序是线程安全的 (thread-safe)，它只是使用控制对驱动程序的访问的全局信号灯。驱动程序的平行使用在 Windows NT 下将非常有限。对于使用 Microsoft Jet 引擎的所有应用程序，所有对 Jet ISAM 层的访问将是单线程的。

当在 Microsoft Windows NT 3.51 或 4.0 的 Windows on Windows (WOW) 上运行多个 16 位的应用程序时，应用程序必须在分隔的内存空间中运行。（不能使用相同的内存空间，因为 ODBC 不支持在同一进程中的多个环境。）若要在分隔的内存空间中运行应用程序，请在 Microsoft Windows NT 程序管理器中选取应用程序的图标，选择 “文件属性” 命令，然后选择 “在分隔内存空间中运行”。

不支持 Windows 95 的 16 位应用程序使用这些驱动程序。

驱动程序特有的硬件和软件需求

•	Microsoft Access、dBASE、和 Microsoft FoxPro 驱动程序可能需要更改 AUTOEXEC.bat 和 CONFIG.sys 文件。


CONFIG.sys 和 AUTOEXEC.bat 更改

如果您正在 Microsoft Windows 95 上使用 Microsoft Access ODBC 驱动程序（不是在 Microsoft Windows NT），且 Microsoft Access 没有安装在您的计算机上，则在 CONFIG.sys 文件中添加一行“FILES＝50”。


安装驱动程序

1	双击 “控制面板” 图标；在 “控制面板” 窗口双击 “ODBC” 图标（或直接打开 ODBC 管理器）。

2	选择 “ODBC 驱动程序” 按钮。

不能再从控制面板或管理器中添加或删除驱动程序。“添加” 和 “删除” 按钮已从 “ODBC 驱动程序” 选项卡中删除。只在 ODBC 桌面数据库驱动程序安装期间才支持新增或删除驱动程序。


添加数据源

请参阅

1	双击 “控制面板” 图标。在控制面板窗口中双击 “ODBC” 图标。

2	选择“用户数据源名”、“系统数据源名称”或“文件数据源名称”选项卡。

3	选择 “添加” 按钮。

4	在 “创建新的数据源” 对话框中，选取驱动程序的名称并随向导的指令行动。


修改数据源

1	请双击 “控制面板” 图标。在控制面板窗口中双击 “ODBC” 图标。

2	根据要修改的数据源类型，选择 “用户数据源名”、“系统数据源名称”、或 “文件数据源名称” 选项卡。

3	由列表中选取数据源。如果修改文件数据源名，在 “搜索” 框中查找相应的目录（如果需要的话，使用 Up 控件），然后从目录中选取数据源。

4	选择 “配置” 按钮，需要时建立数据源。


删除数据源

1	请双击 “控制面板” 图标。在 “控制面板” 窗口中双击 “ODBC” 图标。

2	根据要修改的数据源类型，选择 “用户数据源名”、“系统数据源名称”或 “文件数据源名称” 选项卡。

3	由列表中选取数据源。如果修改文件数据源名称，在 “搜索” 方框中查找相应的目录（需要时使用 Up 控件），然后从目录中选取数据源。

4	单击 “删除” 按钮，然后单击 “是” 按钮来确认删除。


数据源转换

ODBC 桌面数据库驱动程序 2.0 版使用的 32 位数据源会自动转换为驱动程序 3.5 版的新 32 位数据源。对于 16 位数据源不提供转换。若要将 16 位数据源更改为 32 位数据源，请创建一个新的 32 位数据源，然后（选择性地）删除旧的 16 位数据源。32 位数据源和 16 位数据源不能共享相同的名称。


动态地添加、修改或删除数据源

请参阅

可调用 SQLConfigDataSource 函数来动态地添加、修改或删除数据源。此函数使用关键字来设定连接选项，而当通过 “控制面板” 来连接时，该选项则通过 “设置” 对话框来设定。当要添加、修改或删除数据源，又不希望显示 “设置” 对话框时，应该使用此函数。


产品支持

ODBC 的产品支持是由 Microsoft Product Support Services (PSS) 提供的。因为许多 Microsoft 产品以 ODBC 为核心部件，同时分布 ODBC 驱动程序，PSS 将 ODBC 视为任何用户产品的一部分，且该产品吸收 ODBC 作为部件。对于 ODBC 的支持是依照该产品的支持合同来提供的。Microsoft 的每一个产品都提供它自己的支持，如同随产品所附的文档所描述的那样。究竟有哪些支持的项目请参阅该文档。


ODBC 建立对话框

“ODBC 安装” 对话框包含下列字段。请注意：使用关键字调用 SQLConfigDataSource，也能动态地设置大部分的选项。

近似行数

缓冲区大小

排序序列

数据源名

数据库

定义格式

描述

目录

独占

文件扩展名列表

ImplicitCommitSync

网络样式

页超时

只读

扫描的行数

选取目录

选取索引

选取网络目录

选取工作簿

显示删除的行

排序次序

系统数据库

线程

使用当前的目录

UserCommitSync

用户名称

版本


近似行数

（仅对于 dBASE 和 Microsoft FoxPro 驱动程序才显示此控件。）

决定数据表大小统计近似与否。请注意此选项用于所有使用 ODBC 驱动程序的数据源。若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 STATISTICS 关键字。


缓冲区大小

（此控件仅对 Microsoft Access 驱动程序才会显示。）

Microsoft Access 和磁盘之间传送数据使用的内部缓冲区大小（以 KB 为单位）。缺省缓冲区大小是 512 K（显示为 512）。可以输入能被 256 整除的任何整型值。若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 MAXBUFFERSIZE 关键字。


排序序列

（仅对 dBASE、Microsoft FoxPro、和 Paradox 驱动程序才显示此控件。）

字段的排序顺序。

当使用 dBASE 或 Microsoft FoxPro 驱动程序时，排序顺序可以是：ASCII（缺省值）或国际的（International）。

当使用 Paradox 驱动程序时，排序顺序可以是：ASCII（缺省值）、国际的（International ）、瑞典－芬兰（Swedish-Finnish）或挪威－丹麦（Norwegian-Danish）。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 COLLATINGSEQUENCE 关键字。


数据源名称

用来识别数据源的名称，例如 Payroll 或 Personnel。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 DSN 关键字。


数据库

请参阅

（仅对 Microsoft Access 驱动程序才显示此控件。）

要访问的 Microsoft Access 数据库的完整路径。使用“选定”按钮来选取存在的数据库。使用“创建”按钮来创建和选取一个新的 Microsoft Access 数据库。

可以不选取或创建数据库而设定 Microsoft Access 数据源。如果设定上没有提供数据库，当连接至数据源时，将提示用户选择数据库文件。

使用“修复”按钮来修复受损的数据库。使用“压缩”按钮来压缩数据库。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 DBQ 关键字。


定义格式

请参阅

（仅对于 Text 驱动程序才显示此控件。）

显示“定义文本格式”对话框并且让您可以在数据源目录之中对于个别的数据表指定数据库结构。

此选项不能通过调用 SQLConfigDataSource 动态地设定。


描述

对数据源中数据的描述（可选的）；例如，“雇用日期、工资沿革、和当前所有员工一览”。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 DESCRIPTION 关键字。


目录

显示当前选取的目录。在添加数据源之前，必须使用“选取目录”按钮来选取目录、或选取“使用当前目录”复选框来使用应用程序的当前工作目录。（这不会应用至 Microsoft Access 驱动程序。）

对于 Microsoft Excel 3.0/4.0 的文件，路径显示会标记为“目录”，而对于 Microsoft Excel 5.0、7.0、或 97 的文件，路径显示会标记为“工作簿”。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 DEFAULTDIR 关键字。


独占

（仅对于 dBASE、Microsoft Access、Microsoft FoxPro、和 Paradox 驱动程序才显示此控件。）

如果选取 “独占” 框，数据库将打开为独占方式并且一次只可以有一个用户访问。如果清除 “独占” 框，数据库将打开为共享方式并且一次可以有多於一个用户访问。当在独占方式运行时，执行会被增强。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 EXCLUSIVE 关键字。


文件扩展名列表

（仅对 Text 驱动程序才显示此控件。）

列出在数据源上正文文件的扩展名。若要使用在目录中的所有文件，选取“缺省 (*.*)”复选框。若只要使用具有指定扩展名的那些文件，清除“缺省 (*.*)”复选框并且添加要使用的每一个扩展名。当“缺省 (*.*)”是未复选的，扩展名列表缺省为 *.asc、*.csv、*.tab、和 *.txt。

若要添加扩展名，在 “扩展名” 框中键入扩展名并单击 “添加” 按钮。扩展名必须使用 *.xxx 的格式。例如，若要使用 .dat 文件，键入扩展名 *.dat。若要删除扩展名，在“扩展名”列表中选取扩展名并单击“删除”按钮。删除所有扩展名就像是复选了“缺省 (*.*) ”复选框：将显示所有文件。

当使用 Text 驱动程序时，如果用没有扩展名的名称来执行 CREATE TABLE 语句，就会创建一个没有扩展名的文件。而其它驱动程序，当没有提供扩展名时，则创建具有缺省扩展名的文件。若要创建具有 .TXT 扩展名的文件，扩展名必须包含在名称之中。若要在 “定义文本格式” 对话框中显示没有扩展名的文件，必须在扩展名列表中添加“*.”。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 EXTENSIONS 关键字。


ImplicitCommitSync

（仅对于 Microsoft Access 驱动程序才显示此控件。）

决定在事务之外生成的更改如何写入数据库。此值初始设置值为“是”，表示 Microsoft Access 驱动程序将等待内部事务或隐含事务中的交付（commit）的完成。

此选项包含於 Microsoft Access 驱动程序的 “高级选项” 对话框之中。


网络样式

（此控件仅对于 Paradox 驱动程序才会显示。）

访问 Paradox 数据时使用的网络访问样式：对于 Paradox 3.x 为“3.x”，对于 Paradox 4.x 或 5.x 为“4.x”。如果版本是 Paradox 4.x 或 5.x，可以设定为“3.x”或“4.x”；如果版本是 Paradox 3.x，样式必须是“3.x”。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 PARADOXNETSTYLE 关键字。


页超时

（仅对于 dBASE、Microsoft Access、Microsoft FoxPro 和 Paradox 驱动程序才显示此控件。）

指定一页（如果不使用）在删除之前保持在缓冲区中的时间的长短，以十分之一秒为单位。对于 Microsoft Access 驱动程序，缺省值是 5 个十分之一秒（0.5 秒）。对于 dBASE、Microsoft FoxPro、和 Paradox 驱动程序，缺省值是 600 个十分之一秒（60 秒）。请注意，此选项应用于所有使用 ODBC 驱动程序的数据源。

由于系统本身固有的延迟，所以页超时不能是 0。即使页超时选项设置为小于系统本身的延迟，而实际上页超时不可能小于系统本身的延迟。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 PAGETIMEOUT 关键字。


只读

设计数据库为只读。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 READONLY 关键字。


扫描的行数

（仅对于 Microsoft Excel 和 Text 驱动程序才显示此控件。）

为决定每一列的数据类型而扫描的行数。哪一种数据种类找到的最多，就决定该列为哪一种数据类型。如果遇到的数据不符合（用上面的方法）猜测的字段数据类型时，该数据类型将作为 NULL 值返回。

对于 Microsoft Excel 驱动程序，可以输入由 1 至 16 的数字为扫描的行数。此值缺省为 8；如果将它设为 0，会扫描全部的行。（输入范围以外的数字将返回错误。）

对于 Text 驱动程序，可以输入由 1 至 32767 的数字为扫描的行数；不过，缺省为 25。（输入范围以外的数字将返回错误。）

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 MAXSCANROWS 关键字。


选取目录

（仅对于 dBASE、Microsoft Excel 3.0/4.0、Microsoft FoxPro、Paradox、和 Text 驱动程序才显示此控件。）

显示对话框，在此对话框里，可以选取包含要访问文件的目录。

当定义数据源目录时（对于除 Microsoft Access 外的所有驱动程序），指定放置最常使用文件的目录。ODBC 驱动程序将此目录作为缺省目录。如果其它文件被经常使用，就将它们复制至此目录。相反，在带目录名的 SELECT 语句中，您要使用完整文件名：

SELECT * FROM C:\MYDIR\EMP

或者利用带 SQL_CURRENT_QUALIFIER 选项的 SQLSetConnectOption 函数来指定新的缺省目录。

使用 Microsoft Access 驱动程序时，因为可以创建没有对应的 .MDB 文件的数据源，可以使用 “高级选项” 对话框中的 DefaultDir 设置值来定义缺省目录。

目录/工作簿路径显示 (Microsoft Excel)

对于 Microsoft Excel 3.0 或 4.0 的文件，路径显示被标记为“目录”，并且“路径选择”按钮被标记为“选定目录”。对于 Microsoft Excel 5.0、7.0、或 97 的文件，路径显示被标记为“工作薄”，并且 “路径选择” 按钮被标记为“路径选择”。当定义数据源目录时，对于 Microsoft Excel 3.0/4.0，指定放置最常使用的 Microsoft Excel 文件的目录；对于 Microsoft Excel 5.0、7.0、或 97，指定放置工作簿文件的目录。对于 Microsoft Excel 5.0、7.0、或 97，不能使用“使用当前目录”控件。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 DEFAULTDIR 关键字。


选取索引

请参阅

（仅对于 dBASE 和 Microsoft FoxPro 驱动程序才显示此控件。）

显示 “选定索引” 对话框，在此对话框中可以使 dBASE 或 Microsoft FoxPro 文件与索引文件相关联。“选定索引” 对话框包含下列字段。

表

显示当前选取的数据源中的文件列表。

索引

显示赋予当前在表的列表中指定文件的索引。

列出文件类型

显示并且允许您选择要在索引列表中显示的文件类型。

要使表与某索引相关

1	从“表”列表中选取文件。

2	从“索引”列表中选取索引。

3	单击“确定”，保存表/索引的关联。

注意   对于识别 dBASE III 索引或 Microsoft FoxPro 2.0 索引的驱动程序，必须用此对话框来赋值 dBASE III 索引或 Microsoft FoxPro 2.0 索引。

注意   ODBC dBASE 和 Microsoft FoxPro 驱动程序不支持 Clipper .NTX 索引文件。

此选项不能调用 SQLConfigDataSource 来动态设置。


选取网络目录

（仅对于 Paradox 驱动程序才显示此控件。）

包含 Paradox 锁定数据库目录的完整路径，因为它包含 PDOXUSRS.net 文件（在 Paradox 4.x 中），或包含 PARADOX.net 文件（在 Paradox 5.x 中）。如果目录不包含这些文件之一，Paradox 驱动程序将要创建一个。关于这些文件的详细信息，请参阅 Paradox 文档。

在可以选取网络目录之前，必须在 “用户名称” 文本框中输入 Paradox 用户名称。使用 “选取网络目录” 按钮来选取网络目录。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 PARADOXNETPATH 关键字。


选取工作簿

（仅对于 Microsoft Excel 5.0、7.0、或 97 驱动程序才显示此控件。）

对于 Microsoft Excel 5.0、7.0、或 97 的文件，此选项显示当前选取的工作簿。在添加数据源之前，必须使用 “选取工作簿” 按钮来选取目录。

在工作簿中的工作表被视为 SYSTEM TABLES。在工作表中定义或命名的范围被视为 TABLES。


显示删除的行

（此控件仅对于 dBASE 和 Microsoft FoxPro 驱动程序才会显示。）

指定标记为已删除的行是否能被捕获或定位。如果未被复选，不显示删除的行；如果复选了，会将删除的行视同未删除的行。缺省值是未复选。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 DELETED 关键字。


排序次序

（此控件仅对于 Microsoft Access 驱动程序才显示。）

设定数据库的缺省排序次序。可以是：

通用的（English、French、German、Portuguese、Italian)、traditional Spanish、Dutch、Swedish/Finnish、Norwegian／Danish、Icelandic、Czech、Hungarian、Polish、Russian、Turkish、Arabic、Hebrew、Greek、Japanese、Korean、中文-繁体、中文-简体。

此选项不能通过对 SQLConfigDataSource 的调用来动态地设定。


系统数据库

（此控件仅对于 Microsoft Access 驱动程序才显示。）

与要访问的 Microsoft Access 数据库一起使用的 Microsoft Access 系统数据库的完整路径。

选取 “系统数据库” 选项按钮来选取使用的系统数据库。ODBC Microsoft Access 驱动程序提示用户输入名称和密码。缺省名称是 Admin，对于 Admin 用户，在 Microsoft Access 里的缺省密码是空串。

若要增加 Microsoft Access 数据库的安全性，创建新的用户来取代 Admin 用户，并删除 Admin 用户、或更改 Admin 用户访问的对象。

如果没有可用的系统数据库，选取 “无” 选项按钮。选取 “无” 选项按钮，便是作为 Admin 用户登录到 Microsoft Access 数据库，不使用系统数据库。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 SYSTEMDB 关键字。

若需更多关于系统数据库和 Admin 用户的信息，参阅 Microsoft Access 文档。


线程

（此控件仅对于 Microsoft Access 驱动程序才显示。）

使用引擎的背景线程数。对于 Microsoft Access 驱动程序，此缺省值为 3，但是可以更改。如果在数据库中有大量的活动，用户可能希望增加线程的数目。

此选项包含於 Microsoft Access 驱动程序的 “高级选项” 对话框中。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 THREADS 关键字。


使用当前目录

（此控件仅对于 dBASE、Microsoft Excel、Microsoft FoxPro、Paradox、和 Text 驱动程序才显示。）

当选取时，会使此应用程序当前的工作目录成为数据源目录，并使 “选取目录” 选项无效。当清除时，允许使用 “选取目录” 选项来选取数据源目录。

对于 Microsoft Excel 5.0、7.0、或 97，“使用当前目录” 控件不可用。


UserCommitSync

（此控件仅对于 Microsoft Access 驱动程序才显示。）

决定 Microsoft Access 驱动程序是否将异步地执行用户显式定义的事务。初始设置为“是”，表示 Microsoft Access 驱动程序将等待在用户定义事务中的交付完成。

设定此选项为 False 可能会在多用户环境中生成不能预料的结果。

此选项包含在 Microsoft Access 驱动程序的“高级选项”对话框中。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 USERCOMMITSYNC 关键字。


用户名称

（此控件仅对于 Paradox 驱动程序才显示。）

Paradox 用户名称。当遇到锁定时，这是为其它 Paradox 文件的用户显示的名称。

若要动态地设定此选项，请在对 SQLConfigDataSource 的调用中使用 PARADOXUSERNAME 关键字。


版本

让您可以选取使用文件版本的下拉控件，例如，对于 dBASE 驱动程序，可选择 dBASE III、dBASE IV 或 dBASE 5.0。


选取数据库

输入您要访问现存的 Microsoft Access 数据库的完整路径。


创建数据库

输入您要创建新的 Microsoft Access 数据库的完整路径。


定义文本格式

请参阅

当使用 Text 驱动程序时，可用“定义文本格式”对话框来定义在选取文件中列的格式。此对话框让您可以指定每一数据表的结构描述。此信息会写在数据源目录中的 SCHEMA.ini文件 。对于每一文本数据源目录会创建分离的 SCHEMA.ini。

注意   相同的缺省文件格式会应用于所有新的文本数据表。通过 CREATE TABLE 语句创建的所有文件会继承那些相同的缺省格式值，在“定义文本格式”对话框中选取文件格式值，并在“表”列表框中选择 “缺省” 就可以设定那些相同的缺省格式值。Text 驱动程序不会更改现存正文文件格式，以便使它符合对话框中定义的格式，但是当它使用此格式时会返回错误，例如当它企图从这个正文文件中检索数据时。

控件	信息
添加	使用该对话框的数据类型、名称、及宽度字段中的值来添加列，另外，如果适合，会采用 SCHEMA.ini 中的日期分隔符。
字符	ANSI 或 OEM。OEM 指定了非 ANSI 字符集。如果先前“表”列表中所选取项目的格式未经此对话框定义，此值缺省为 OEM。
NameHeader 列	指出选取的表第一行的列是否为列名。其值为 TRUE 或 FALSE。如果先前“表”列表中所选取项目的格式未经此对话框定义，此值缺省为 FALSE。
列	包含在选取的表中的每一列的列名的列表。列的顺序反应表中的列的顺序。如果在“表”列表中已选取文件，此列表是有效的。
数据类型	可以是 BIT、BYTE、CHAR、CURRENCY、Date、Float、Integer、LONGCHAR、SHORT、或 SINGLE。Date 数据类型可以是下列格式："dd-mmm-yy"、"mm-dd-yy"、"mmm-dd-yy"、"yyyy-mm-dd"、或 "yyyy-mmm-dd"。"mm" 表示月的数字；"mmm" 表示英文的月份缩写。
分隔符	指定用于分隔列的自定义分隔字符。当选取“自定义分隔”格式之后，此值是有效的。分隔符长度仅为一个字符，且不能用双引号 (�) 作为分隔字符。（请注意不能以十六进制或十进制格式指定分隔符。）
格式	可以是符号分隔的或固定长度的。如果是符号分隔的，指出使用的分隔符类型：逗点 (CSV)、tab 符号、或特殊的字符（自定义）。如果“表”列表中所选取项目的格式事先没有在此对话框中定义，此值缺省为 CSV 符号分隔。 如果“格式”是固定长度的并且“列名称标头”是 TRUE，第一行必须是逗点分隔的。
猜测	根据“格式”列表框的选择扫描表的内容，会自动生成所选表中列的数据类型、名称、及宽度值。当表格式为符号分隔时，它会发生作用。任何先前在“列”列表中定义的列将会被清除，并被新的项目取代。如果没有复选“列名称标头 ”，列名会自动地生成为“F1”、“F2”等等。请注意在“日期类型”框中不显示缺省值。 此功能只能在小于 64,513 个字节的列上工作。
修改	用数据类型、名称、及宽度字段中的值来修改选取的列。
名称	显示选取列的名称。可能用来指定存在的列或新列的新列名。 如果“列名称标头 ”是 TRUE，则忽略显示的列名。
删除	删除选取的列。
扫描的行数	当根据现存数据设定列和列数据类型时，安装或驱动程序将扫描的行数。 可以输入从 1 至 32767 之间的数字为扫描的行数。如果“表”列表中所选取项目的格式事先没有在此对话框中定义，此值缺省为 25（输入范围之外的数字将返回错误。）
表	包含在“文本设置”对话框中所选取的目录中的所有文件列表，这些文件与指定的扩展名列表匹配。 当选取 “缺省”，且下列之一为 true 时，在表群组中的表属性值会写入 schema.ini。不影响 schema.ini 中的其它项目。 • 在指定的目录中没有 schema.ini。 • schema.ini 文件存在，但是对于在目录中的某个正文文件（有指定的扩展名），在 schema.ini 中没有对应的区段。 • schema.ini 中有正文文件的区段存在，但没有内容。 当选取“缺省”时，"列" 群组是无效的。
宽度	对于 CHAR 或 LONGCHAR 列，列的宽度可以更改。如果“表”列表中所选取项目的格式事先没有在此对话框中定义，宽度缺省为 1。 对于其它数据类型，宽度控制是无效的，且不会显示任何值。


结构描述

结构描述包含数据源中每一个表（正文文件） 的有关信息，包括表的格式、决定列类型所扫描的行数、表的第一行是否包含列名、源文件是用 OEM 写的还是用 ANSI 码写的、以及每一列的名称、数据类型、及宽度。


SCHEMA.ini 文件

请参阅

当使用 Text 驱动程序时，正文文件的格式是用结构描述信息文件来决定的。结构描述信息文件总是命名为 Schema.ini，始终放在和文本数据源相同的目录中，它提供的 IISAM 有关于文件一般格式的信息、字段名和数据类型信息、和许多其它数据特征。访问固定长度的数据时，一定需要 Schema.ini 文件；当文本表包含日期时间、货币、或十进制数据时、或当要对数据表中的数据处理有更多的控制时，都应使用 Schema.ini 文件。

注意   文本 ISAM 将从注册簿中获得初始值，而不是从 SCHEMA.ini。相同的缺省文件格式应用于所有新的文本数据表。所有由 CREATE TABLE 语句创建的文件会继承那些相同的缺省格式值，在“定义文本格式”对话框选取文件格式值，并在“表”列表框中选择的 “缺省”便能设置那些缺省格式值。如果在注册簿中的值不同於在 SCHEMA.ini 中的值，SCHEMA.ini 的值将改写注册簿中的值。

介绍 Schema.ini 文件

Schema.ini 文件提供关于正文文件中记录的结构描述信息。每一个 Schema.ini 项目指定表的五个特征中的一个：

•	正文文件名称

•	文件格式

•	字段名、宽度、和类型

•	字符集

•	特殊的数据类型转换

下列讨论这些特征。

指定文件名

Schema.ini 中的第一项始终是括在方括号中的文本源文件的名称。下面就是 Sample.txt 文件的这一项：

“Sample.txt”

指定文件格式

Schema.ini 中的 Format 选项指定了正文文件的格式。Text IISAM 能自动地从大多数字符分隔的文件中读入格式。可用除双引号 (�) 之外的任何单一字符当做为文件中的分隔符。在 Schema.ini 中的 Format 设置会覆盖每个文件的 Windows 注册中的设置。下列表格列出在 Format 选项中的有效数。

格式说明符	表的格式
TabDelimited	文件中的字段由 tab 符分隔。
CSVDelimited	文件中的字段由逗点（逗点分隔的值）分隔。
Delimited(*)	文件中的字段由星号分隔。可用除双引号之外的任何字符来代替星号。
FixedLength	在文件中的字段属于固定长度。
例如，要指定逗点分隔的格式，可在 Schema.ini 中添加：

Format=CSVDelimited

指定字段

可以用二种方法，在字符分隔的正文文件中指定字段名：

•	在表的第一行中包含字段名，并设定 ColNameHeader 为 TRUE。

•	用数字指定每一列，并设计列的名称和数据类型。

对于固定长度文件，必须用数字指定每一列，并设计列的名称、数据类型及宽度。

注意   Schema.ini 的 ColNameHeader 设置会覆盖每个文件的 Windows 注册簿中的 FirstRowHasNames 设置。

也能决定字段的数据类型。使用 MaxScanRows 选项指出当决定列的类型时，应该扫描多少行。如果 MaxScanRows 设置为 0，则会扫描整个文件。在 Schema.ini 中的 MaxScanRows 设置会覆盖每个文件的 Windows 注册簿中的设置。

下面的两行代码指出，Microsoft Jet 应使用表的第一行的数据来决定字段名，应该检验整个文件来决定使用的数据类型：

ColNameHeader=True

MaxScanRows=0

下一项是利用列号 (Coln) 选项来设计表中的字段，这对于字符分隔文件是可选的，而对固定长度文件是必需的，下面的两行是两个字段的对应项：一个是 10 个字符的 CustomerNumber 文本字段，另一个是 30 个字符的 CustomerName 文本字段：

Col1=CustomerNumber Text Width 10

Col2=CustomerName Text Width 30

Coln 的语法是：

Coln=ColumnName type “Width #”

Coln 项目的每一部分是：

参数	描述
ColumnName	列的文本名称。如果列名包含空格，必须用双引号括起来。
type	数据类型是： Microsoft Jet 数据类型 Bit Byte Short Long Currency Single Double DateTime Text Memo ODBC 数据类型 Char（和文本相同） Float（和 Double 相同） Integer（和 Short 相同） LongChar（和 Memo 相同） Date 日期格式
Width	文本字符串值 Width。指出后面列宽度的数字（对于字符分隔的文件而言这是可选的，对于固定长度文件而言这是必需的）。
#	指定列宽度的整型值（如果指定了 Width，则是必需的）。
选取字符集

可以从二个字符集中选取一个：ANSI 和 OEM。下列示例显示在 Schema.ini 中选取 OEM 字符集的项。在 Schema.ini 中的 CharacterSet 设置会覆盖每个文件在 Windows 注册簿中的设置。下列示例显示在 Schema.ini 中选取字符集为 ANSI 的设置：

CharacterSet=ANSI

指定数据类型格式和转换

Schema.ini 文件包含一些可用来指定数据如何转换或显示的选项。下表列出每一个选项。

选项	描述
DateTimeFormat	可以设定指定日期和时间格式的字符串。如果在导入/导出中的所有日期/时间字段都用相同的格式处理，应该指定此项目。除 A.M. 和 P.M. 之外的所有 Microsoft Jet 格式都支持。若不规定格式字符串，则使用 Windows “控制面板” 的 “简短日期” 格式和 “时间” 选项。
DecimalSymbol	用来设定分隔整数部分与小数部分的单一字符。
NumberDigits	指出数值的小数部分的位数。
NumberLeadingZeros	指定小于 1 并且大于 -1 的十进制值数是否应该包含前导零；此值可以是 False （没有前导零）或 True。
CurrencySymbol	指出在正文文件中货币值使用的货币符号。例如美元符号 ($) 和 Dm。
CurrencyPosFormat	可以设定为下列任何值： • 货币符号在前且没有分隔 ($1) • 货币符号在後且没有分隔 (1$) • 货币符号在前且有一个分隔 ($ 1) • 货币符号在後且有一个分隔 (1 $)
CurrencyDigits	指定用作货币量的小数部分的位数。
CurrencyNegFormat	可设定为下列值之一： • ($1) • -$1 • $-1 • $1- • (1$) • -1$ • 1-$ • 1$- • -1 $ • -$ 1 • 1 $- • $ 1- • $ -1 • 1- $ • ($ 1)  • (1 $) 此示例显示美元符号，但在实际程序中应该用适当的 CurrencySymbol 值取代它。
CurrencyThousandSymbol	指出在正文文件中以千位来分隔货币值的单一字符符号。
CurrencyDecimalSymbol	设定用来分隔整个货币量的小数部分的单一字符。
注意   不管省略哪一项，系统会使用在 Windows “控制面板” 的缺省值。


正文文件格式（高级）

请参阅

ODBC Text 驱动程序支持符号分隔和定宽的两种正文文件。正文文件是由可选的标题行和零或多行文本组成的。

虽然标题行和正文文件中的其它行使用相同的格式，ODBC Text 驱动程序会将标题行解释为列名，而不是数据。

符号分隔的文本行包含一个或一个以上被分隔符（逗点、tab、或自定义分隔符）分隔的数据值。整个文件必须使用相同的分隔符。Null 数据值是用二个紧接着的分隔符表示的。在分隔的文本行中的字符串可以括在双引号中 (摂)。在分隔值之前或之后不能有空格。

在定宽文本行中，每个数据项的宽度在结构描述中指定。Null 数据值用空格表示。

表被限于 255 个字段。字段名限于 64 个字符，而字段宽度限于 32,766 个字符。记录限于 65,000 个字节。

正文文件只能给单一用户打开。不支持多用户。

下列语法是供程序员参考的，它定义了 ODBC Text 驱动程序能读的正文文件格式。非斜体代表必须输入的字符，斜体代表定义在语法中其他地方的参数，方括号 (“”) 代表可选项，花括弧 ({}) 分隔多个互斥选择的列表，垂直线 (|) 分隔这些选择，(...) 代表可以重复一次或一次以上的项。

正文文件的格式是：

text-file ::=
“delimited-header-line” “delimited-text-line”... end-of-file |
“fixed-width-header-line” “fixed-width-text-line”... end-of-file

delimited-header-line ::= delimited-text-line

delimited-text-line ::=
blank-line |
delimited-data “delimiter delimited-data”... end-of-line

fixed-width-header-line ::= fixed-width-text-line

fixed-width-text-line ::=
blank-line |
fixed-width-data “fixed-width-data”... end-of-line

end-of-file ::= <EOF>

blank-line ::= end-of-line

delimited-data ::= delimited-string | number | date | delimited-null

fixed-width-data ::= fixed-width-string | number | date | fixed-width-null
定宽正文文件中每一列的宽度，在 SCHEMA.INI 文件中指定。

end-of-line ::= <CR> | <LF> | <CR><LF>

delimited-string ::= unquoted-string | quoted-string

unquoted-string ::= “character | digit” “character | digit | quote-character”...

quoted-string ::=
quote-character
“character | digit | delimiter | end-of-line | embedded-quoted-string”...
quote-character

embedded-quoted-string ::=
quote-character quote-character
“character | digit | delimiter | end-of-line”
quote-character quote-character

fixed-width-string ::= “character | digit | delimiter | quote-character” ...

character ::=  any character except:
delimiter
digit
end-of-file
end-of-line
quote-character

digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

delimiter ::= , | <TAB> | custom-delimiter

custom-delimiter ::= any character except:
end-of-file
end-of-line
quote-character
在自定义分隔符正文文件中的分隔符，在 SCHEMA.INI 文件中指定。

quote-character ::= "

number ::= exact-number | approximate-number

exact-number ::= “+ | -” {unsigned-integer“.unsigned-integer” |
unsigned-integer. |
.unsigned-integer}

approximate-number ::= exact-number{e | E}“+ | -”unsigned-integer

unsigned-integer ::= {digit}...

date ::=
mm date-separator dd date-separator yy |
mmm date-separator dd date-separator yy |
dd date-separator mmm date-separator yy |
yyyy date-separator mm date-separator dd |
yyyy date-separator mmm date-separator dd

mm ::= digit “digit”

dd ::= digit “digit”

yy ::= digit digit

yyyy ::= digit digit digit digit

mmm ::= Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

date-separator ::= - | / | .

delimited-null ::=
对于符号分隔文件，NULL 是由中间没有数据的二个分隔符表示。

fixed-width-null ::= <SPACE>...
对于定宽文件，NULL 是用空格表示。


选取唯一记录标识符

选取唯一标识表的记录的列。


数据源

当使用 Microsoft Access 驱动程序时，数据源指定要使用的 Microsoft Access 数据库 (.mdb) 和取得那个数据库需要的信息。

当使用 dBASE、Microsoft Excel 3.0/4.0、Microsoft FoxPro、Paradox、或 Text 驱动程序时，数据源指定缺省数据目录，ODBC 驱动程序在该目录中搜寻要访问的数据文件及其它信息。

对于 Microsoft Excel 5.0、7.0 或 97，数据源指定缺省的数据工作簿，ODBC 驱动程序在该工作簿里搜寻要访问的数据文件及其它信息。


密码项

请参阅

密码必须在连接时输入，或者用连接串中的密码（对于 Microsoft Access 是 UID 和 PWD，对于 Paradox 是 PWD） 或者用 SQLConnect 函数的 szAuthStr 参数。

当使用 Microsoft Access 驱动程序时，如果数据源使用系统数据库，应用程序可能提示您输入您的名字和密码。缺省是 Admin；对于 Admin 用户，在 Microsoft Access 里的缺省密码是空串。

当使用 Paradox 驱动程序时，只支持在连接串中输入密码。只要表被打开，该密码都是有效的。如果连接串中没有密码，该表就不会建立密码。如果不同的表有不同的密码，就不能同时打开它们，也不能连接它们。


异种联结/附加表

当使用 Microsoft Access 驱动程序时，会支持附加表和异种联结。

不支持创建至附加表的链接。Microsoft Access 驱动程序不用于从 Microsoft Access 数据库管理系统内部，将一个表附加至另一个表。数据表应该直接附加。

请注意，不支持从 Data Access Objects (DAO) 代码内部使用 ODBC 桌面数据库驱动程序。


打开 Microsoft Excel 表

Microsoft Excel 驱动程序不能读早於 3.0 版的 Microsoft Excel 文件格式。这些文件可以在 Microsoft Excel 的较高版本中打开，并且以驱动程序能读的 3.0、4.0、5.0、7.0、或 97 版本的格式存储。

如果生成连接的数据源版本是 "Excel"（Microsoft Excel 3.0 或 4.0），则创建 BIFF3-版本的表。如果数据源的版本是 "Excel 5.0"、"Excel 7.0" 或 "Excel 97"，工作表会创建在连接的工作簿中。

Microsoft Excel 3.0 和 Microsoft Excel 4.0 文件格式必须有定义的数据库范围。Microsoft Excel 驱动程序将命名的范围识别为表。添加新数据时，命名的范围指定的数据库将增大。如果新的数据将覆盖工作表中的老数据（超出表示该数据的命名的范围），将会返回错误。

按照缺省规定，所有为插入而创建并打开的 Microsoft Excel 表（电子表格 均按独占方式打开，并且只能由一个用户打开。用户必须显式选择以共享方式打开 Microsoft Excel 表。“只读”允许多个用户查看 .xls 文件。


密码保护的文件

当使用 Paradox 驱动程序时，在一个用户打开密码保护的文件之后，其它用户不能再打开相同的文件。


反复连接之后的失败

如果工作在 Microsoft Windows 95 上的 ODBC 应用程序，与服务器反复地（超过 50-60 次）连接和断开，连接可能失败，同时驱动程序返回 SQLSTATE 01000（一般性警告）和错误信息“不能取得表达式服务”。特别是 Internet Web 服务器应用程序的问题可能引起此类错误。更新在 \\WINDOWS\SYSTEM 目录中的 rpcrt4.dll 文件来释放 QFE 324，就可解决这次失败。更详细的信息，请与 Microsoft 产品支持服务联系。


参考完整性

仅对于 Microsoft Access 数据源支持参考完整性，而且只支持由 Microsoft Access 数据库管理系统为该数据源建立的参考完整性。


Lotus 1-2-3 数据/EMS 数据

ODBC 桌面数据库驱动程序不支持 Lotus 1-2-3 的数据或 EMS 的数据。


Visual Basic 支持

在 Visual Basic 之中，TableDef 对象的 Connect 和 Attributes 属性可以用来连接使用 ODBC 桌面数据库驱动程序的 ODBC 数据源。更详细的信息，请参阅 Visual Basic 文档。


连接串（高级）

请参阅

ODBC 驱动程序的连接串使用下列关键字：

关键字	描述
DSN	数据源的名称
DBQ	目录的名称
DRIVERID	驱动程序的整型标识符。
FIL	文件类型  （对于 Microsoft Access 是 MS Access；dBase III、dBase IV、或 dBase5；对于 Microsoft Excel 是 Excel 3.0、Excel 4.0、Excel 5.0、Excel 7.0 或 Excel 97；对于 Microsoft FoxPro 是 FoxPro 2.0、2.5 或 2.6；Paradox 3.x、4.x、或 5.x；或 Text） 此关键字仅为了向后兼容性而支持。
驱动程序特定的关键字

除了在前面表格中显示的关键字之外，Microsoft Access 驱动程序使用 UID 和 PWD 关键字，Paradox 驱动程序使用 PWD 关键字。

关键字	描述
UID	用户登录账号（仅 Microsoft Access）。最初设定为 �Admin敗９赜� Admin 用户账号的更详细信息，请参阅《Microsoft Jet Database Engine 程序员指南》中第十章“管理的安全性”的“创建新的 Admin 用户”。
PWD	用户指定的密码。
除了以上列出的关键字之外，还支持其它使用在连接串之中的关键字。关于这些关键字的更详细信息，请参阅 SQLConfigDataSource。在连接串中不支持压缩数据库 (COMPACT_DB) 和创建数据库 (CREATE_DB) 的 Microsoft Access 特定关键字。

注意   当使用 Microsoft Access 或 Paradox 驱动程序时，PWD 关键字不应该包含任何特殊的字符（请参阅在 SQLGetInfo 返回值中的 SQL_SPECIAL_CHARACTERS）。


选取数据库（高级）

当使用 Microsoft Access 驱动程序时，可以在“Microsoft Access 安装”对话框中选取“选定”按钮来选取现存数据库。

“打开数据库”对话框包含下列字段：

控制	描述
数据库名	有 .mdb 扩展名的现存数据库文件名。
独占	如果选取“独占”框，数据库将以独占方式打开，且一次只能有一位用户可以访问。如果清除“独占”框，数据库将以共享方式打开，可以多个用户访问。以独占方式运行时，执行的效能会增强。
只读	指定数据库为只读。


创建数据库（高级）

当使用 Microsoft Access 驱动程序时，可以单击“创建”按钮来创建新数据库。

注意   用“创建”按钮创建的数据库只能在 Microsoft Access 7.0 下工作。

“新建数据库”对话框包含下列字段：

控制	描述
数据库名	有 .mdb 扩展名的数据库文件名。
旧的格式 (2.x)	创建 ODBC 2.x 兼容的数据库。
排序次序	设置数据库的缺省排序次序。可以是： 通用 (English、French、German、Portuguese、Italian)、traditional Spanish、Dutch、Swedish/Finnish、Norwegian／Danish、Icelandic、Czech、Hungarian、Polish、Russian、Turkish、Arabic、Hebrew、Greek、Japanese、Korean、中文-繁体、中文-简体。
系统数据库	创建系统数据库。


数据库修复（高级）

当使用 Microsoft Access 驱动程序时，如果在交付处理期间客户发生失败（在 SQLTransact 发布之后，在函数返回之前），受影响的数据库可能被损坏并且需要修复。通过“Microsoft Access 驱动程序安装”对话框安装，或在程序中使用 SQLConfigDataSource 函数，可以执行修复。

若要通过“Microsoft Access 驱动程序安装”对话框来修复数据库，请单击“修复”按钮。选好文件和路径后，再单击“确定”。

若要通过程序修复数据库，在 SQLConfigDataSource 函数的属性 (lpszAttributes) 列表中包含“REPAIR_DB=<path name>”。在此函数中，<path name> 是 Microsoft Access 数据库的完整路径。

修复密码保护的文件时，必须在“高级选项”对话框中（如果是由程序修复，在 SQLConfigDataSource 的属性列表中）输入密码和用户账号。在修复之后应该删除密码和用户账号。

这些动作将在数据库上运行标准的 Microsoft Access 修复进程。这些动作中的任何一个都能影响 Microsoft Access 数据库中的数据。

请注意，被指为损坏的数据库事实上可能没有损坏。很可能是由于没有清除某些位的不正常关机造成的。在这种和其它情况下，程序员可能不想让最终用户看见损坏信息。用 SQLDriverConnect 函数传递 SQL_DRIVER_NOPROMPT 可以实现。

关于在 Microsoft Access 里修复数据库的更详细信息，请参阅 Microsoft Access 帮助文件。


数据库压缩（高级）

当使用 Microsoft Access 驱动程序时，通过“Microsoft Access 驱动程序安装”对话框安装，或在程序中使用 SQLConfigDataSource 函数，可以在数据库上执行数据压缩。

若要在数据库文件上，通过“Microsoft Access驱动程序安装”对话框来执行数据压缩，请单击“压缩”按钮。从“压缩的数据库来源”对话框中选好文件和路径，然后单击“确定”。从“将数据库压缩到”对话框中选好文件和路径，选好压缩後文件的版本和排序次序（它可以随目的数据库而更改），然后单击“确定”。压缩後文件可以和被压缩的文件同名。如果压缩後的文件和存在的文件同名，会返回错误。

若要通过程序在数据库文件上执行数据压缩，在 SQLConfigDataSource 函数的属性 (lpszAttributes) 列表中包含 "COMPACT_DB=<source db> <dest db> <sort order>"。在此函数之中，<source db> 是被压缩的 Microsoft Access 数据库的完整路径，<dest db> 是压缩後 Microsoft Access 数据库的完整路径。

当压缩密码保护的文件时，必须在“高级选项”对话框中（如果是由程序压缩，在 SQLConfigDataSource 的属性列表中）输入密码和用户账号。在压缩之后应该删除密码和用户账号。压缩密码保护的文件可能有不能预料的结果。

这些动作将在数据库上执行标准的 Microsoft Access 压缩进程。

关于在 Microsoft Access 里压缩数据库的更详细信息，请参阅 Microsoft Access 帮助文件。


词汇表

A

Access plan （访问计划表）   由数据库引擎生成并用于执行 SQL 语句的一种计划表。等价于从第三代语言（如 C 语言）编译生成的可执行代码。

Aggregate function （合计函数）   由一组值生成一个值的函数，通常与 GROUP BY 和 HAVING 子句一起使用。合计函数包括 AVG、COUNT、MAX、MIN 以及 SUM。也称为集合函数。请参阅标量函数。

ANSI   美国国家标准学会。ODBC API 以 ANSI 调用层接口 (Call-Level Interface) 为基础。

APD   应用程序参数描述符。

API   应用程序接口。应用程序用来请求与执行较低层服务的子程序集合。ODBC API 是由 ODBC 函数组成的。

Application （应用程序）   一个调用 ODBC API 函数的可执行程序。

Application Parameter Descriptor （应用程序参数描述符，APD）   一个描述符，描述在应用程序所指定的任何转换之前 SQL 语句中所使用的动态参数。

Application Row Descriptor （应用程序行描述符，ARD）   一个描述符，表示列元数据以及应用程序缓冲区中的数据，描述执行由应用程序所指定的任何数据转换的数据行。

ARD   应用程序行描述符。

Auto-commit mode （自动提交模式）   一种事务提交模式，在这种模式中，事务一旦执行完毕即立刻提交。

B

Behavioral change （行为改变）   某些功能从 ODBC 3.x 行为到 ODBC 2.x 行为出现的改变，反之亦然。这是由于改变 SQL_ATTR_ODBC_VERSION 环境属性而造成的。

Binary large object （二进制大对象，BLOB）   超过一定字节数量的任何二进制数据，如 255。一般会长很多。这种数据通常逐步发送到数据源或从数据源检索。也称为长数据。

Binding （绑定）   作为动词时，其代表的操作是将结果集中的某列或者 SQL 语句中的某个参数与应用程序中的一个变量关联起来。作为名词而言，即指这种关联。

Binding offset （绑定偏移）   一个值，将这个值与数据缓冲区地址以及表示整个绑定列或参数数据范围的长度/指示符缓冲区地址相加，从而产生新的地址。

Block cursor （块光标）   可以同时获取多行数据的光标。

Buffer （缓冲区）   应用程序内存块，用来在应用程序和驱动程序之间传输数据。缓冲区一般成对使用： 即一个数据缓冲区以及一个数据长度缓冲区。

Byte（字节）   八个比特或一个八位字节。请参阅八位字节。

C

C data type （C 语言数据类型）      用 C 语言编写的程序（此时即为应用程序）中变量的数据类型。

Catalog （目录）     数据库中系统表的集合，负责描述该数据库的形状。也称为方案或数据词典。

Catalog function （目录函数）   ODBC 函数，用来从数据库的目录中检索信息。

CLI   请参阅API。

Client/server （客户/服务器）   一种数据库访问策略。在这种访问策略中，一个或多个客户均通过一个服务器来访问数据。客户通常负责实现用户接口，而服务器则负责访问数据库。

Column （列）   一行中单个信息项的树枝目录。也称为字段。

Commit （提交）   确定事务中发生的更改。

Concurrency （并发性）   多个事务同时访问同一个数据的能力。

Conformance level （符合层）   由某个驱动程序或数据源提供的特定功能的离散集合。ODBC 定义了 API 的符合层和 SQL 的符合层。

Connection（连接）   驱动程序或数据源的特定实例。

Connection browsing （连接浏览）   在网络中查找要连接的数据源。连接浏览可能包括若干个步骤。例如，用户可以首先浏览网络来查找服务器，然后浏览某个特定的服务器来查找数据库。

Connection handle （连接句柄）   一个句柄，指向包含连接信息的数据结构。

Current row （当前行）   光标当前所指的行。指定位置的操作就是对当前行进行操作。

Cursor （光标）   将数据行返回给应用程序的软件代码块。可能是根据计算机终端上的闪烁光标来命名的；就如同光标指示的是屏幕上的当前位置一样，结果集的光标则指明了该结果集的当前位置。

D

Data buffer （数据缓冲区）   用来传输数据的缓冲区。一般说来，一个数据缓冲区都有一个与之相关联的数据长度缓冲区。

Data dictionary （数据词典）   请参阅目录。

Data length buffer （数据长度缓冲区）   一个缓冲区，用来传输该缓冲区所对应的数据缓冲区中值的长度。数据长度缓冲区也可以用来存储指示符，诸如该数据值是否以 null 结束。

Data source （数据源）   指用户想要访问的数据，以及所关联的操作系统、DBMS 和网络平台（如果存在）。

Data type （数据类型）   数据块的类型。ODBC 定义了 C 语言和 SQL 的数据类型。请参阅类型指示符。

Data-at-execution column （数据在执行的列）   在调用 SQLSetPos 之后其数据被发送的列。之所以这样命名，是因为这些数据是在执行时发送，而不是放在一个行集合缓冲区中发送。在执行时长数据通常逐步发送。

Data-at-execution parameter （在执行数据参数）   在调用  SQLExecute 或 SQLExecDirect 之后其数据被发送的参数。之所以这样命名，是因为这些数据是在执行 SQL 语句时发送，而不是放在一个参数缓冲区中发送。在执行时长数据通常是逐个部分进行发送。

Database （数据库） DBMS 中数据的离散集合。也是一个 DBMS。

Database engine （数据库引擎）   DBMS 中的软件，负责分析和执行 SQL 语句以及访问物理数据。

DBMS   数据库管理系统。位于物理数据库和用户之间的软件层。DBMS 负责管理所有对数据库的访问。

DBMS-based driver （基于 DBMS 的驱动程序）   一种驱动程序，通过一种独立方式的数据库引擎来访问物理数据。

DDL   数据定义语言。指任何定义数据对象，而不是处理数据对象的 SQL 语句。例如 CREATE TABLE、CREATE INDEX、GRANT 和 REVOKE.

Delimited Identifier （定界标识符）   用标识符引用字符（即引号）引起来的标识符，从而可以包含特殊字符或匹配关键字（也称为被引起来的标识符）。

Descriptor （描述符）   一种数据结构，用来保存关于列数据或动态参数的信息。描述符的物理表示法没有定义；应用程序只有通过调用带描述符句柄的 ODBC 函数来操作其字段，才能直接访问一个描述符。

Desktop database （桌面数据库）   为在个人计算机上运行而设计的一种 DBMS。在大多数情况下，这些 DBMS 都不提供独立方式的数据库引擎，且必须通过基于文件的驱动程序才能访问。这些驱动程序中的引擎通常会简化对 SQL 和事务处理的支持 � 例如 dBASE、Paradox、Btrieve 或 FoxPro。

Diagnostic （诊断）   一个记录，其中包含了关于使用特定句柄所调用的最后一个函数的诊断信息。诊断记录与环境、连接、语句、以及描述符句柄相关联。

DML   数据处理语言。指任何处理数据对象，而不是定义数据对象的 SQL 语句。示例包括 INSERT、UPDATE、DELETE、以及 SELECT。

Driver （驱动程序）   一种提供 ODBC API 函数的子程序库。驱动程序都是针对某个特定的 DBMS 的。

Driver Manager （驱动程序管理器）   管理应用程序对驱动程序的访问的子程序库。驱动程序管理器负责加载或卸载驱动程序，并将对 ODBC 函数的调用传输给合适的驱动程序。 另一种表述方式为： 当传输对 ODBC 函数的调用时，驱动程序管理器负责建立（以及断开）与驱动程序的连接。

Driver setup DLL （驱动程序的安装 DLL）    包含驱动程序特有的安装和配置功能的 DLL。

Dynamic cursor （动态光标）    一种可滚动的光标，可以在结果集中检测更新的、删除的、或插入的行。

Dynamic SQL （动态 SQL）   嵌入式 SQL 的一种类型，在运行时才创建和编译 SQL 语句。请参阅静态  SQL。

E

Embedded SQL （嵌入式 SQL）   直接包含在用其它语言（如 COBOL 或 C 语言）编写的程序中的 SQL 语句。ODBC 不使用嵌入式 SQL。请参阅静态 SQL 和动态 SQL。

Environment （环境）   用来访问数据的全局上下文；与环境关联在一起的是所有本来就是全局的信息，如该环境中的所有连接的列表。

Environment handle （环境句柄）   一个指向包含环境信息的数据结构的句柄。

Escape clause （换码子句）   SQL 语句中的一种子句。

Execute （执行）   运行一条 SQL 语句。

F

Fat cursor （大光标）   请参阅块光标。

Fetch （获取）   要从结果集中检索一行或多行。

Field （字段）   请参阅列。

File-based driver （基于文件的驱动程序）   直接访问物理数据的驱动程序。在这种情况下。该驱动程序包含一个数据库引擎，而且既当驱动程序，又当数据源。

File data source （文件数据源）   连接信息存储在 .DSN 文件中的数据源。

Foreign key （外部键）   表中匹配另一个表的主键的一列或多列。

Forward-only cursor （仅向前光标）   在结果集中只能向前移动，且一次只能取一行的一种光标。绝大多数关系数据库仅支持仅向前光标。

H

Handle （句柄）   唯一标识诸如文件或数据结构等对象的值。只有对创建和使用句柄的软件来说，这些句柄才是有意义的，并且被其它软件传输来标识事物。ODBC 为环境、连接、语句、以及描述符定义了句柄。

I

Implementation Parameter Descriptor （实现参数描述符，IPD）   一个描述符，描述在应用程序所指定的任何转换之后 SQL 语句中所使用的动态参数。

Implementation Row Descriptor （实现行描述符，IRD）   一个描述符，描述应用程序所指定的任何转换之前的数据行。

Installer DLL （安装程序 DLL）   安装 ODBC 组件和配置数据源的 DLL。

Integrity Enhancement Facility （完整性增强工具）   用于维护数据库完整性的 SQL 子集。

Interface conformance level （接口符合层）   驱动程序所支持的 ODBC 3.7 接口层，可能为核心层、第 1 层、或第 2 层。

Interoperability （互操作性）   应用程序使用同样的代码来访问不同的 DBMS 中的数据的能力。

IPD   实现参数描述符。

IRD   实现行描述符。

ISO/IEC   国际标准组织/国际电子技术委员会。ODBC API 以 ISO/IEC 调用层接口为基础。

J

Join （联接）   关系数据库中的一种操作，即通过匹配指定列中的值来链接两个或多个表中的行。

K

Key （键）    用来标识行的一列或多列。请参阅主键和外部键。

Keyset （键集）   键的集合，通过混合或键集驱动的光标来重新获取行。

Keyset-driven cursor （键集驱动的光标）   一种可滚动光标，通过使用键集来检测已更新或被删除的行。

L

Literal （原义）   SQL 语句中数据的实际值的字符表示方式。

Locking （锁定）    在多用户环境中 DBMS 用来限制对某行的访问而作的处理。DBMS 通常对行或包含一行的物理页设置一个标志位，来标识该行或该页已被锁定。

Long data （长数据）   超过一定长度（如 255 个字节或字符）的任何二进制或字符数据。一般会长很多。这样的数据通常逐个部分地发送到数据源或从中检索。也称为 BLOB 或 CLOB。

M

Machine data source （机器数据源）   连接信息存储在系统中（例如注册表）的数据源。

Manual-commit mode （手工提交模式）   一种事务提交模式，在此模式中，必须通过显式调用 SQLTransact 来提交事务。

Metadata （元数据）   描述 SQL 语句中的参数或结果集中的列的数据。例如，数据类型、字节长度、以及参数的精度。

Multiple-tier driver （多级驱动程序）    请参阅基于 DBMS 的驱动程序。

N

NULL value （NULL 值）   没有显式指定的值。需要注意，NULL 值不同于零或空。

O

Byte （字节）   八个比特或一个八位字节。请参阅字节。

Octet length （八位字节长度）   缓冲区或缓冲区所包含数据的八位字节长度。

ODBC   开放式数据库连接。一种定义标准的子程序集合的 API，应用程序可以使用这些标准的子程序来访问数据源中的数据。

ODBC Administrator （ODBC 管理程序）   调用安装程序 DLL 来配置数据源的可执行程序。

ODBC SDK   ODBC 软件开发工具包。是用来帮助开发 ODBC 应用程序和驱动程序的产品。

Optimistic concurrency （优化并发）   增加并发性的一种策略。在这种策略中，行不被锁定。在更新或删除行之前，光标将检查这些行在上一次读操作后是否被更改过。如果更改过，则更新或删除操作将失败。请参阅保守并发。

Outer join （外部联接）   一个同时返回匹配和不匹配的行的联接。在不匹配的行中来自不匹配表中的所有列的值均被设置为 NULL。

Owner （所有者）   表的所有者。

P

Parameter （参数）   SQL 语句中的变量，用参数标记符或问号标记。参数被限制为应用程序变量，这些参数的值将在执行该语句时被检索。

Parameter descriptor （参数描述符）    一个描述符，描述 SQL 语句中所使用的运行时参数，或者在应用程序所指定的任何转换之前（如应用程序参数描述符，或称为 APD），或者在应用程序所指定的任何转换之后（如实现参数描述符，IPD）。

Parameter operation array （参数操作数组）   一个数组，应用程序用该数组所包含的值来指示在 SQLExecDirect 或 SQLExecute 操作中应忽略的行。

Parameter status array （参数状态数组）   一个数组，其中包含了在调用 SQLExecDirect 或 SQLExecute之后的参数状态。

Pessimistic concurrency （保守式并发）   实现顺序访问的一种策略。在这种策略中行将被锁定，从而使其它事务不能改动这些行。请参阅优化并发。

Positioned operation （定位操作）   对当前行采取的任何操作 - 例如，定位更新和删除语句、SQLGetData、以及 SQLSetPos。

Positioned update statement （定位更新语句）   用来更新当前行的值的 SQL 语句。

Positioned delete statement （定位删除语句）   用来删除当前行的 SQL 语句。

Prepare （准备）   编译 SQL 语句。通过准备一条 SQL 语句来创建一个访问计划表。

Primary key （主键）   唯一地标识表中一行的一列或数列。

Procedure （过程）   一组预先编译好的 SQL 语句，且作为一个命名对象存储在数据库中。

Procedure column （过程列）   过程调用中的一个参数，过程所返回的值，或者过程所创建的结果集中的列。

Q

Qualifier （限定符）   包含一个或多个表的数据库。

Query （查询）   一个 SQL 语句。有时也指 SELECT 语句。

Quoted Identifier （被引起来的标识符）   用标识符引用字符（即引号）引起来的标识符，这样标识符就可以包含特殊的字符或匹配关键字（在 SQL92 中称为分隔标识符）。

R

Radix （基数）   数字系统的基数。通常为 2 或 10。

Record （记录）   请参阅行。

Result set （结果集）   通过执行 SELECT 语句得到的行的集合。

Return code （返回码）   ODBC 函数的返回值。

Roll back （回卷）   将事务更改的值返回原始状态。

Row （行）   描述指定实体的相关列的集合。也称为记录。

Row descriptor （行描述符）   描述结果集的列的描述符，或者在应用程序所指定的任何转换之前（如实现行描述符，或称为 IRD），或者在应用程序所指定的任何转换之后（如应用程序行描述符，ARD）。

Row operation array （行操作数组）   一个数组，应用程序用该数组所包含的值来指示 SQLSetPos 操作应忽略的行。

Row status array （行状态数组）   一个数组，其中包含调用了  SQLFetch、SQLFetchScroll 或 SQLSetPos 之后的行的状态。

Rowset （行集合）   由块光标一次取得的行集合。

Rowset buffers （行集合缓冲区）   缓冲区限定为结果集所具有的列数，且其中所返回的是整个行集合的数据。

S

SAG   SQL 用户联盟。由关注 SQL DBMS 的公司所组成的工业界协会。X/Open 调用层接口来自于 SQL 用户联盟最初所进行的工作。

Scalar function （标量函数）   从单个值产生单个值的函数 � 例如，改变字符大小写的函数。

Schema （方案）   请参阅目录。

Scrollable cursor （可滚动的光标）   可以在结果集中向前或向后移动的光标。

Serializability （可串行化）   指两个事务同时执行产生的结果与串行（或顺序）执行这些事务的结果是否相同。可串行的事务需要维护数据库的一致性。

Server database （服务器数据库）   为在客户/服务器环境中运行而设计的一种 DBMS。这些 DBMS 用一种独立式数据库引擎来为 SQL 和事务处理提供强大支持。可以通过基于 DBMS 的驱动程序访问 （例如 Oracle、Informix、DB/2、或 Microsoft SQL Server）。

Set function （集合函数）   请参阅合计函数。

Setup DLL （安装 DLL）   请参阅驱动程序安装 DLL，以及转换器安装 DLL。

Single-tier driver （单级驱动程序）   请参阅基于文件的驱动程序。

SQL   结构化查询语言。在关系数据库中用来查询、更新、以及管理数据的语言。

SQL conformance level （SQL 符合层）   驱动程序所支持的 SQL92 语法层；可能为 Entry、FIPS Transitional、Intermediate、Full 之一。

SQL data type （SQL 数据类型）   列或者存储到数据源中的参数的数据类型。

SQLSTATE   一个包括五个字符的值，代表一个特定的错误。

SQL statement （SQL 语句）   用 SQL 写的完整短语，其中以关键字开始，并完整地描述要进行的操作 - 例如，SELECT * FROM Orders. SQL 语句和语句不能混淆。

State （状态）   对某项目预定义的情形。例如，一个连接具有七种状态，包括未分配、已分配、已连接、以及需要数据等。某些操作只有当该项目处于某个特定状态时才能执行。例如，只有当连接处于已分配状态时才能被释放，而当其处于已连接状态时，就不能被释放。

State transition （状态转换）   项目从一个状态到另一个状态的移动。ODBC 为环境、连接以及语句定义了严格的状态转换。

Statement （语句）   与某条 SQL 语句相关的所有信息。不要将语句和 SQL 语句混淆。

Statement handle （语句句柄）   一个指向包含语句信息的数据结构的句柄。

Static cursor （静态光标）   一种可滚动的光标，无法检测对结果集的更新、删除、或插入。通常通过复制结果集来实现。

Static SQL （静态 SQL）   嵌入式 SQL 的类型之一。这种 SQL 语句是硬编码的，而且与程序的其它部分一起进行编译。请参阅动态 SQL。

Stored procedure （存储过程）   请参阅过程。

T

Table （表）   行的集合。

Thunking （形实转换）    指当 16 位的应用程序与 32 位的 ODBC 驱动程序一起使用时，16 位地址与 32 位地址的相互转换。

Transaction （事务）   最基本的操作单元。一个事务中的操作必须作为一个整体完成，该事务中任何部分的失败都将导致整个事务失败。

Transaction isolation （事务隔离）   将一个事务与其它所有事务的影响隔离开来的行为。

Transaction isolation level （事务隔离级别）   关于事务隔离程度的一种度量。总共分为五种事务隔离级别： 读不提交、读提交、可重复读、可串行、以及执行。

Translator DLL （转换器 DLL）    用来将数据从一种字符转换为另一种字符的 DLL。

Translator setup DLL （转换器安装 DLL）   包含转换器特有的安装和配置功能的 DLL。

Two-phase commit （两阶段提交）   以两阶段方式提交分布式事务的过程。在第一个阶段，事务处理器确认该事务的所有部分是否都可以提交。在第二个阶段，则提交该事务的所有部分。如果在第一个阶段中该事务存在任意一个不能被提交的部分，则第二个阶段就不会发生。ODBC 不支持两阶段提交。

Type indicator （类型指示符）   传输给 ODBC 函数或从 ODBC 函数返回的整型值，表示应用程序变量、参数、或列的数据类型。ODBC 为 C 语言和 SQL 的数据类型都定义的类型指示符。

V

View （视图）   查看一个或多个表中的数据的可选方式。视图通常只显示一个或多个表的一部分列。在 ODBC 中，视图通常等价于表。

X

X/Open   公布各类标准的公司，其中包括 SAG 标准。