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.

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了