ADO 数据类型转换表
ADO 数据类型转换表
下面的表格列出了 Access、SQL Server 与 Oracle 之间的数据类型映射关系:
DataType Enum | 值 | Access | SQLServer | Oracle |
---|---|---|---|---|
adBigInt | 20 | BigInt (SQL Server 2000 +) | ||
adBinary | 128 | Binary TimeStamp |
Raw * | |
adBoolean | 11 | YesNo | Bit | |
adChar | 129 | Char | Char | |
adCurrency | 6 | Currency | Money SmallMoney |
|
adDate | 7 | Date | DateTime | |
adDBTimeStamp | 135 | DateTime (Access 97 (ODBC)) | DateTime SmallDateTime |
Date |
adDecimal | 14 | Decimal * | ||
adDouble | 5 | Double | Float | Float |
adGUID | 72 | ReplicationID (Access 97 (OLEDB)), (Access 2000 (OLEDB)) | UniqueIdentifier (SQL Server 7.0 +) | |
adIDispatch | 9 | |||
adInteger | 3 | AutoNumber Integer Long |
Identity (SQL Server 6.5) Int |
Int * |
adLongVarBinary | 205 | OLEObject | Image | Long Raw * Blob (Oracle 8.1.x) |
adLongVarChar | 201 | Memo (Access 97) Hyperlink (Access 97) |
Text | Long * Clob (Oracle 8.1.x) |
adLongVarWChar | 203 | Memo (Access 2000 (OLEDB)) Hyperlink (Access 2000 (OLEDB)) |
NText (SQL Server 7.0 +) | NClob (Oracle 8.1.x) |
adNumeric | 131 | Decimal (Access 2000 (OLEDB)) | Decimal Numeric |
Decimal Integer Number SmallInt |
adSingle | 4 | Single | Real | |
adSmallInt | 2 | Integer | SmallInt | |
adUnsignedTinyInt | 17 | Byte | TinyInt | |
adVarBinary | 204 | ReplicationID (Access 97) | VarBinary | |
adVarChar | 200 | Text (Access 97) | VarChar | VarChar |
adVariant | 12 | Sql_Variant (SQL Server 2000 +) | VarChar2 | |
adVarWChar | 202 | Text (Access 2000 (OLEDB)) | NVarChar (SQL Server 7.0 +) | NVarChar2 |
adWChar | 130 | NChar (SQL Server 7.0 +) |
* 在 Oracle 8.0.x 中 - decimal 和 int 等于 number 和 number(10)。
ADO 数据类型有哪些限制
这个问题是从网上看别的网友问的;
问的信息
我正在尝试确定用于调用 SQL Server(2005) 存储过程的相应 ADO 命令参数数据类型。我特别首先尝试确定适当的 ADO 数据类型,该数据类型对应于 varchar(MAX) 的 SQL Server 数据类型。我想它可能是 adVarChar, 但我不确定。
为什么文档中列出的每种数据类型的大小(例如’字符串’类型的字符数,数值类型的范围)?为什么看起来似乎不可能找到一个方便的表格列出每种数据类型以及每种数据类型的最大信息量?!您认为有人会注意到与“为什么我的数据被截断?”的变体相关的数百万个问题。…
澄清 – 以上信息仅仅是一个具体的例子,说明了解 ADO 数据类型限制的实用性,例如:选择适当的 ADO 数据类型来处理各种数据源的特定数据类型
具体部分
varchar(MAX) 可以在 ADO 中用作输入参数。
在这种情况下,数据类型为 adLongVarChar, 最大长度为 & h7FFFFFFF, 如文档 here 所示。
但它不能用作输出参数。 它也不能作为返回记录中的字段类型使用(搞笑 – .Value 是空的,因为它实际上是一个长类型,但可能不会调用 GetChunk 来检索实际数据,因为 ADO 认为它不是长类型).
如果需要使用 VBA / ADO 将 varchar(MAX) 作为输出参数使用,则必须选择它以将记录集返回给客户端,并且在执行此操作时必须将其转换为文本:
select cast(@var as text) as data;
return 0;:
然后你会说s = .Fields(0).GetChunk(.Fields(0).ActualSize)
从打开的记录集中获取数据。
抽象部分
ADO 的重点是消除不同数据源之间的差异。只要有一个支持接口的数据访问驱动程序,您(理想情况下)可以在不打扰它的情况下与它通信。
作为任何抽象,这个也是 leaky.
确切了解哪些服务器映射到哪些 ADO 数据类型的数据类型来自经验。那是。
一些经验法则可能会很快发展:
通过将其名称与特定服务器的数据类型名称相匹配来计算可能的 ADO 数据类型并不困难: int – adInteger datetime – adDBDate(虽然在这里你可能会被迫进行一些试验和错误)
某些数据类型称为 BLOB(二进制大对象). 它们旨在包含大量数据,并且通常在数据源文档中提供。对于这些,相应的 ADO 数据类型可能在其名称中包含 Long, 在 ADO 世界中,它表示“BLOB”(adLongVarBinary,adLongVarChar,adLongVarWChar). 有关数据类型的确切长度的任何信息都可以在数据源的文档中找到,而不是在 ADO 文档中找到。对于这样的事情:
开发人员为此特定表中的特定列设置的最大长度(例如 varchar(10)) BLOB 数据类型的最大理论长度(例如 varchar(max))
您将参考相应的数据源,而不是 ADO.