最近三天痛苦了,被oracle和.NET之間的串連頭都搞大了,經過不但的安裝和找原因,終於搞清楚了一下兩點:
(1)System.Data.OracleClient 需要 Oracle 用戶端軟體 8.1.7 或更高版本”
(2)System.Exception: OCIEnvCreate 失敗,傳回碼為 -1,但錯誤訊息文本不可用。
解決問題一:
一串連資料庫就出錯誤,剛開始彈出
“System.Data.OracleClient 需要 Oracle 用戶端軟體 8.1.7 或更高版本”
解決方案:剛開始我覺得我通過webservice調用遠程服務的oracle資料庫,我不操作oracle資料庫,因此,我本機上不需要安裝oracle資料庫,理論上覺得應該是這樣的,可是最後發現,這樣是不對的,結論:c#寫的webservice調用遠端oracle資料庫時,本機上也要安裝用戶端,而java則不需要。安裝用戶端後問題得到解決。
解決問題二:
win7下.net2008 串連oracle,提示錯誤OCIEnvCreate 失敗,傳回碼為 -1,但錯誤訊息文本不可用
在操作Oracle時出現以下錯誤:
System.Exception: OCIEnvCreate 失敗,傳回碼為 -1,但錯誤訊息文本不可用。
在 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
在 System.Data.OracleClient.OracleConnection.Open()
我是通過webservice調用遠程伺服器的Oracle資料庫,本機沒有安裝Oracle
經過一天的網上找資料,不斷的調試和安裝,終於找到原因了:
一切的一切都是WIN7的安全模式,許可權問題,在win7下要用管理員身份運行所有的不相容軟體
解決方案:找到vs2008,右擊“以管理員身份運行”,啟動vs2008,然後開啟項目/解決方案,選中你的程式,運行,通過。
之所以彈出以上的錯誤,都是因為身份不夠,以管理員身份運行就OK了
總結:WIn7比XP多了個管理員權限,就是右擊程式有“以管理員身份運行”
因此,當你的程式,代碼在XP下能運行時,而在win7下彈出錯誤,就試試這個方法,在你的程式上右擊“以管理員身份運行”,一般都能解決問題。
PL/SQL也要用管理員身份運行,否則也是連不上。