DBProvider 连接 Oracle 10g 数据库的问题
在應(yīng)用.Net 2.0 連接Oracle的時(shí)候遇到了問(wèn)題:
1.1時(shí)代都是直接Using System.Data.OracleClient,.Net 2.0改進(jìn)成使用DBProvider(System.Data.Common)的方式,
看起來(lái)很美,但是用到Oracle存儲(chǔ)過(guò)程返回結(jié)果集的時(shí)候愣住了
DBType沒(méi)有支持Cursor的類型?!查了資料半天也沒(méi)有結(jié)果
如果實(shí)在沒(méi)辦法只好回到System.Data.OracleClient了
.NET Framework Data Provider for Oracle
| BFILE | Byte[] | GetBytes() | GetOracleBFile() |
| BLOB | Byte[] | GetBytes() | GetOracleLob() |
| CHAR | String Char[] | GetString() GetChars() | GetOracleString() |
| CLOB | String Char[] | GetString() GetChars() | GetOracleLob() |
| DATE | DateTime | GetDateTime() | GetOracleDateTime() |
| FLOAT | Decimal | GetDecimal() | GetOracleNumber() ** |
| INTEGER | Decimal | GetDecimal() | GetOracleNumber() ** |
| INTERVAL YEAR TO MONTH * | Int32 | GetInt32() | GetOracleMonthSpan() |
| INTERVAL DAY TO SECOND * | TimeSpan | GetTimeSpan() | GetOracleTimeSpan() |
| LONG | String Char[] | GetString() GetChars() | GetOracleString() |
| LONG RAW | Byte[] | GetBytes() | GetOracleBinary() |
| NCHAR | String Char[] | GetString() GetChars() | GetOracleString() |
| NCLOB | String Char[] | GetString() GetChars() | GetOracleLob() |
| NUMBER | Decimal | GetDecimal() | GetOracleNumber() ** |
| NVARCHAR2 | String Char[] | GetString() GetChars() | GetOracleString() |
| RAW | Byte[] | GetBytes() | GetOracleBinary() |
| REF CURSOR | ? | ? | ? |
| ROWID | String Char[] | GetString() GetChars() | GetOracleString() |
| TIMESTAMP * | DateTime | GetDateTime() | GetOracleDateTime() |
| TIMESTAMP WITH LOCAL TIME ZONE * | DateTime | GetDateTime() | GetOracleDateTime() |
| TIMESTAMP WITH TIME ZONE * | DateTime | GetDateTime() | GetOracleDateTime() |
| UNSIGNED INTEGER | Decimal | GetDecimal() | GetOracleNumber() ** |
| VARCHAR2 | String Char[] | GetString() GetChars() | GetOracleString() |
問(wèn)題最終用一下的方式解決:
??????????? DbParameter param = dpfProvider.CreateParameter();
??????????? if (sourceColumn == ORACLE_REF_CURSOR)
??????????? {
??????????????? OracleParameter op = new OracleParameter();
??????????????? op.OracleType = OracleType.Cursor;
??????????????? param = op;
??????????? }
雖然看起來(lái)有點(diǎn)不倫不類,但是能運(yùn)行,而且支持多個(gè)Oracle Ref Cursor
轉(zhuǎn)載于:https://www.cnblogs.com/yuxu/archive/2005/12/19/300476.html
總結(jié)
以上是生活随笔為你收集整理的DBProvider 连接 Oracle 10g 数据库的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [导入]防止你的日志页被人iframe
- 下一篇: C#中的委托与事件[翻译]