Oracle数据类型与.NET中的对应关系
Oracle連接添加的引用不同,會存在數(shù)據(jù)類型不同以及其他一些差別,就工作中遇到的問題暫時總結(jié)下。
兩種不同的添加引用語句:
(1)System.Data.OracleClient;
(2)Oracle.DataAccess.Client;
Oracle.DataAccess.Type;
采用第二種引用,創(chuàng)建的OracleCommand實例有ArrayBindCount屬性,可用于傳入數(shù)組型參數(shù),執(zhí)行多次儲存過程函數(shù)。
對于不同引用創(chuàng)建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);
下面結(jié)合.NET開發(fā)需要,對數(shù)據(jù)類型比較整合下:
備注:
(1).NET類型:OracleDataReader.GetValue返回的.NET Framework數(shù)據(jù)類型;
(2)OracleType類型:OracleDataReader.GetOracleValue返回的OracleClient數(shù)據(jù)類型。
(3)DbType:要綁定為參數(shù)的System.Data.DbType枚舉
(4)OracleType:要綁定為參數(shù)的OracleType枚舉
?
| 序號 | Oracle數(shù)據(jù)類型 | .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 |
| 20 | RefCursor | ? | ? | ? | Cursor |
(1)?Oracle?只允許將?BFILE?綁定為?BFILE?參數(shù)。如果您嘗試綁定非?BFILE?值,例如?byte[]?或?OracleBinary,Oracle .NET?數(shù)據(jù)提供程序不會自動為您構(gòu)造一個參數(shù)。
(2)?Oracle?只允許將?BLOB?綁定為?BLOB?參數(shù)。如果您嘗試綁定非?BLOB?值,例如?byte[]?或 OracleBinary,Oracle .NET?數(shù)據(jù)提供程序不會自動為您構(gòu)造一個參數(shù)。
(4)Oracle?只允許將?CLOB?綁定為?CLOB?參數(shù)。如果您嘗試綁定非?CLOB?值,例如?System.String?或 OracleString,Oracle .NET?數(shù)據(jù)提供程序不會自動為您構(gòu)造一個參數(shù)。
(6、7)Size?確定System.Data.DBType?和OracleType。
(8、9、18)OracleType?僅在同時使用 Oracle 9i 客戶端和服務(wù)器軟件時才適用。
(13)Oracle 只允許將 NCLOB 綁定為 NCLOB 參數(shù)。如果您嘗試綁定非 NCLOB 值,例如 System.String 或 OracleString,Oracle .NET 數(shù)據(jù)提供程序不會自動為您構(gòu)造一個參數(shù)。
轉(zhuǎn)載于:https://www.cnblogs.com/kliine/p/10018580.html
總結(jié)
以上是生活随笔為你收集整理的Oracle数据类型与.NET中的对应关系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django+Echarts画图实例
- 下一篇: 设计模式(三)--观察者模式