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 |
| 20 | RefCursor | ? | ? | ? | Cursor |
(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 數據提供程序不會自動為您構造一個參數。
轉載于:https://www.cnblogs.com/kliine/p/10018580.html
總結
以上是生活随笔為你收集整理的Oracle数据类型与.NET中的对应关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django+Echarts画图实例
- 下一篇: 编译出现的问题解决