Oracle數據類型與.NET中的對應關係

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 數據提供程序不會自動爲您構造一個參數。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章