Oracle数据类型与.NET中的对应关系 2011-02-24 10:02:16
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.Varchar2,200);
下面结合.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 | Single、Double、Decimal | Float、Double、Number | 
| 7 | INTEGER | Decimal | OracleNumber | SByte、Int16、Int32、Int64、Decimal | SByte、Int16、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[] 或 OracleBinary,Oracle .NET 数据提供程序不会自动为您构造一个参数。
(2) Oracle 只允许将 BLOB 绑定为 BLOB 参数。如果您尝试绑定非 BLOB 值,例如 byte[] 或 OracleBinary,Oracle .NET 数据提供程序不会自动为您构造一个参数。
(4)Oracle 只允许将 CLOB 绑定为 CLOB 参数。如果您尝试绑定非 CLOB 值,例如 System.String 或 OracleString,Oracle .NET 数据提供程序不会自动为您构造一个参数。
(6、7)Size 确定System.Data.DBType 和OracleType。
(8、9、18)OracleType 仅在同时使用 Oracle 9i 客户端和服务器软件时才适用。
(13)Oracle 只允许将 NCLOB 绑定为 NCLOB 参数。如果您尝试绑定非 NCLOB 值,例如 System.String 或 OracleString,Oracle .NET 数据提供程序不会自动为您构造一个参数。
原文:http://www.cnblogs.com/yasepix/p/4968235.html