• Oracle数据类型与.NET中的对应关系


    之前用的是mysql数据库和sqlserver数据库,现在开始用的是orcal数据库,发现其中有很多不同的地方。只是根据自己在项目中遇到的问题的不同而记录下来,一来加深自己的印象,二可以供大家参考,因为自己还是菜鸟级别的,所以只好借鉴大牛的总结。

    ==================================================================

    Oracle连接添加的引用不同,会存在数据类型不同以及其他一些差别,就工作中遇到的问题暂时总结下。

    两种不同的添加引用语句:

    (1)System.Data.OracleClient;

    (2)Oracle.DataAccess.Client;

    Oracle.DataAccess.Type;

    采用第二种引用,创建的OracleCommand实例有ArrayBindCount属性,可用于传入数组型参数,执行多次储存过程函数。

    对于不同引用创建OracleParameter实例,类型也存在着差异:

    第一种引用:System.Data.OracleClient.OracleParameter  para=new System.Data.OracleClient.OracleParameter("APPLICATIONNAME_",OracleType.NVarChar,200);

    第二种引用:Oracle.DataAccess.Client.OracleParameter para=new Oracle.DataAccess.Client.OracleParameter("APPLICATIONNAME_",OracleDbType.Varchar2200);

    下面结合.NET开发需要,对数据类型比较整合下:

    备注:

    1).NET类型:OracleDataReader.GetValue返回的.NET Framework数据类型;

    2)OracleType类型:OracleDataReader.GetOracleValue返回的OracleClient数据类型。

    3)DbType:要绑定为参数的System.Data.DbType枚举

    4)OracleType:要绑定为参数的OracleType枚举

    序号

    Oracle数据类型

    .NET类型

    GetOracleValue类型

    DbType

    OracleType

    1

    BFILE

    byte[]

    OracleBFile

     

    BFile

    2

    BLOB

    byte[]

    OracleLob

     

    Blob

    3

    CHAR

    string

    OracleString

    AnsiStringFixedLength

    Char

    4

    CLOB

    string

     

    OracleLob

     

     

     

    Clob

     

    5

    DATE

    DateTime

    OracleDateTime

    DateTime

    DateTime

    6

    FLOAT

    Decimal

    OracleNumber

    SingleDouble、Decimal

    FloatDouble、Number

    7

    INTEGER

    Decimal

    OracleNumber

    SByteInt16、Int32、Int64、Decimal

    SByteInt16、Int32、Number

    8

    INTERVAL YEAR TO  MONTH

    Int32

    OracleMonthSpan

     

    Int32

     

    IntervalYearToMonth

    9

    INTERVAL DAY TO  SECOND

    TimeSpan

    OracleTimeSpan

    Object

     

    IntervalDayToSecond

     

    10

    LONG

    string

    OracleString

    AnsiString

    LongVarChar

    11

    LONG RAW

    byte[]

    OracleBinary

    Binary

    LongRaw

    12

    NCHAR

    string

    OracleString

    StringFixedLength

    NChar

    13

    NCLOB

    string

    OracleLob

     

    NClob

    14

    NUMBER

    Decimal

    OracleNumber

    VarNumeric

    Number

    15

    NVARCHAR2

    string

    OracleString

    String

    NVarChar

    16

    RAW

    byte[]

    OracleBinary

    Binary

    RAW

    17

    ROWID

    string

    OracleString

    AnsiString

    Rowid

    18

    TIMESTAMP

    DateTime

    OracleDateTime

    DateTime

    Timestamp

    19

    VARCHAR2

    string

    OracleString

    AnsiString

    VarChar

    (1) Oracle 只允许将 BFILE 绑定为 BFILE 参数。如果您尝试绑定非 BFILE 值,例如 byte[] 或 OracleBinaryOracle .NET 数据提供程序不会自动为您构造一个参数。

    (2) Oracle 只允许将 BLOB 绑定为 BLOB 参数。如果您尝试绑定非 BLOB 值,例如 byte[] 或 OracleBinaryOracle .NET 数据提供程序不会自动为您构造一个参数。

    4)Oracle 只允许将 CLOB 绑定为 CLOB 参数。如果您尝试绑定非 CLOB 值,例如 System.String 或 OracleStringOracle .NET 数据提供程序不会自动为您构造一个参数。

    6、7)Size 确定System.Data.DBType 和OracleType

    8、9、18)OracleType 仅在同时使用 Oracle 9i 客户端和服务器软件时才适用

    13)Oracle 只允许将 NCLOB 绑定为 NCLOB 参数。如果您尝试绑定非 NCLOB 值,例如 System.String 或 OracleString,Oracle .NET 数据提供程序不会自动为您构造一个参数

  • 相关阅读:
    数据结构实验报告(四)
    数据结构实验报告(三)
    数据结构实验报告(一)
    数据结构实验报告(二)
    Java基础之排序
    1070 Mooncake
    1071 Speech Patterns
    1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit
    5403. Find the Kth Smallest Sum of a Matrix With Sorted Rows
    1072 Gas Station
  • 原文地址:https://www.cnblogs.com/xiaoxiaomi/p/4786816.html
Copyright © 2020-2023  润新知