<轉>Oracle資料型別與.NET中的對應關係

taogchan發表於2013-11-01

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[] 或 ,Oracle .NET 資料提供程式不會自動為您構造一個引數。

(2) Oracle 只允許將 BLOB 繫結為 BLOB 引數。如果您嘗試繫結非 BLOB 值,例如 byte[] 或 OracleBinary,Oracle .NET 資料提供程式不會自動為您構造一個引數。

(4)Oracle 只允許將 CLOB 繫結為 CLOB 引數。如果您嘗試繫結非 CLOB 值,例如 System.String 或 OracleString,Oracle .NET 資料提供程式不會自動為您構造一個引數。

(6、7) 確定System.Data.DBType 和OracleType。

(8、9、18) 僅在同時使用 Oracle 9i 客戶端和伺服器軟體時才適用。

(13)Oracle 只允許將 NCLOB 繫結為 NCLOB 引數。如果您嘗試繫結非 NCLOB 值,例如 System.String 或 OracleString,Oracle .NET 資料提供程式不會自動為您構造一個引數。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22392018/viewspace-775537/,如需轉載,請註明出處,否則將追究法律責任。

相關文章