• 使用 ADOX 将 Table 添加到 Catalog 时报“类型无效”的原因和解决方法


    http://blog.csdn.net/kfhzy/article/details/6020283

    http://blog.csdn.net/kfhzy/article/details/6020545

    李维的代码,原来链接的是MS SQL,改成ACCESS后,创建Table时报 类型无效 错误

    原因:

    除了

    adDBTimeStamp 这样的Access 明显不支持的数据类型外,一般的,也有区别,adVarChar 在ACCESS里是adVarWChar
    procedure TfrmCreateTable.btnCreateTableClick(Sender: TObject);
    begin
      // create table
      with FCatalog do
      begin
        FTable := CoTable.Create;
        FTable.ParentCatalog := FCatalog;
        FTable.Name := edtTableName.Text;
    
        FTable.Columns.Append('ISBN', adVarWChar, 20);
        FTable.Columns.Append('BookName', adVarWChar, 60);
        FTable.Columns.Append('Publisher', adVarWChar, 60);
        FTable.Columns.Append('Author', adVarWChar, 10);
    //    FTable.Columns.Append('PDT', adDBTimeStamp, 8); //MS SQL Server
        FTable.Columns.Append('Price', adInteger, 4);
    
        // create index
        FIndex := CoIndex.Create;
        with FIndex do
        begin
          Name := 'ISBN';
          PrimaryKey := True;
          Unique := True;
          Columns.Append('ISBN', adVarWChar, 20);
        end;
        FTable.Indexes.Append(FIndex, EmptyParam);
        Tables.Append(FTable);
      end;
    end;
    使用 ADOX 将 Table 添加到 Catalog 时报“类型无效”的原因和解决方法
    作者:孟宪会 发表于:2010-10-21 11:12:18

    使用 ADOX 创建 adDBTimeStamp 类型的字段时,会产生“类型无效”的错误提示,产生这种错误的原因是,数据库引擎 Provider 只能接受已知类型的数据类型,下面是可以接受的类型对照表:

    ADOX.DataTypeEnum 类型枚举常量ValueJet 3.51Jet 4.0SQL 7.0
    adBinary 128 Yes Yes Yes
    adBoolean 11 Yes Yes Yes
    adChar 129 Yes No Yes
    adCurrency 6 Yes Yes Yes
    adDate 7 Yes Yes No
    adDouble 5 Yes Yes Yes
    adGUID 72 Yes Yes Yes
    adInteger 3 Yes Yes Yes
    adLongVarBinary 205 Yes Yes Yes
    adLongVarChar 201 Yes No Yes
    adLongVarWChar 203 No Yes Yes
    adNumeric 131 No Yes (with info)* Yes (with info)*
    adSingle 4 Yes Yes Yes
    adSmallInt 2 Yes Yes Yes
    adUnsignedTinyInt 17 Yes Yes Yes
    adVarBinary 204 Yes Yes Yes
    adVarChar 200 Yes No Yes
    adVarWChar 202 No Yes Yes
    adWChar 130 No Yes Yes
    adDBTimeStamp 135 No No Yes
    * 在Microsoft Jet 4.0 和 Microsoft SQL Server 7.0 中使用 adNumeric 数据类型时,必须设置精度(precision)。
     
     

    ADO 数据类型

    下面的表格列出了 Access、SQL Server 与 Oracle 之间的数据类型映射:

    DataType EnumValueAccessSQLServerOracle
    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)。

  • 相关阅读:
    poj3111 K Best 最大化平均值,二分
    cd732D Exams 二分
    cf448D Multiplication Table 二分
    hdu2199,double二分
    hdu3015,poj1990树状数组
    Codeforces Round #595 (Div. 3) D2Too Many Segments,线段树
    C#学习
    C#中单例的双重锁定模式
    C# HashSet 用法、Hashtable用法
    如何阅读他人的项目源代码程序
  • 原文地址:https://www.cnblogs.com/CodeGear/p/4280346.html
Copyright © 2020-2023  润新知