阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

    教程列表

    数据库
    抓包专区
    测试专区

    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.

    卖前端学习教程

    只需几十元,就能买到培训班的内部教程!开启高薪之路!

    零基础小白阿里P7的教程都有!

    同时长期收购所有培训班的前端教程

    目录
    目录