Oracle連接添加的引用不同,會存在數據類型不同以及其他一些差別,就工作中遇到的問題暫時總結下。
兩種不同的添加引用語句:
(1)System.Data.OracleClient;
(2)Oracle.DataAccess.Client;
Oracle.DataAccess.Type;
採用第二種引用,創建的OracleCommand實例有ArrayBindCount屬性,可用於傳入數組型參數,執行多次儲存過程函數。
對於不同引用創建OracleParameter實例,類型也存在着差異:
第一種引用:System.Data.OracleClient.OracleParameter
第二種引用: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 |
Int32 |
OracleMonthSpan |
Int32 |
IntervalYearToMonth |
9 |
INTERVAL DAY TO |
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 數據提供程序不會自動爲您構造一個參數。