您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何實現ADO測試程序,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
原來在Sql Server及Oracle上操作時,執行完成后直接把連接關閉了。返回的參數想怎么處理就怎么處理,并不會出錯,注意使用COM交互操作訪問ADO的數據將極大的降低性能。
不知道這里有多少人用Sybase做數據庫開發的,我是有點受不了了。用了ADO測試程序,沖破重重阻力,終于系統算是正常運行了,要做更進一步的處理:增加數據權限。我們原來是在Sql Server上用函數直接返回的結果集來判斷的。
但是Sybase不支持函數,只好用存儲過程返回一個判斷權限的條件字符串動態執行。問題是取出輸出參數總提提示“Command has been closed”。奇怪啊,明明執行的時候是Open了Connection了。寫了一個ADO測試程序:
AseConnection con = new AseConnection("Data Source='SYBASE'; Port=5000; UID='sa'; PWD=''; Database='data';Connection Timeout='300';") ; AseCommand com = new AseCommand("GetDataRightSQL", con) ; com.CommandType = System.Data.CommandType.StoredProcedure ; try { AseParameter prm = new AseParameter("@UserID", 1) ; //prm.Direction = System.Data.ParameterDirection.Input ; com.Parameters.Add(prm) ; prm = new AseParameter("@Category","Department") ; com.Parameters.Add(prm) ; com.Parameters.Add(new AseParameter("@FieldName", "Dept_ID")) ; prm = new AseParameter("@returnSql", AseDbType.VarChar, 250) ; prm.Direction = System.Data.ParameterDirection.Output ; com.Parameters.Add(prm) ; con.Open() ; com.ExecuteNonQuery() ; Console.WriteLine(com.Parameters["@returnSql"].Value) ;
由于是我們有一個數據層專門處理數據庫操作,開始懷疑封裝的不好了。檢查了N次也不知道在哪出錯,ADO測試程序總以為是輸出參數類型有問題,試過幾次,長度也改過。不行。
后來注意到:跟蹤執行的時候執行成功,總是在取參數的時候出錯。
再看一下錯誤信息“Command has been closed”,暈!ADO測試程序不會是取參數值的時候要求數據庫連接保持Open狀態吧? 修改一下測試代碼:
AseParameter prm = new AseParameter("@UserID", 1) ; // prm.Direction = System.Data.ParameterDirection.Input ; com.Parameters.Add(prm) ; prm = new AseParameter("@Category","Department") ; com.Parameters.Add(prm) ; com.Parameters.Add(new AseParameter("@FieldName", "Dept_ID")) ; prm = new AseParameter("@returnSql", AseDbType.VarChar, 250) ; prm.Direction = System.Data.ParameterDirection.Output ; com.Parameters.Add(prm) ; con.Open() ; com.ExecuteNonQuery() ; con.Close() ; //提前關閉數據庫 Console.WriteLine(com.Parameters["@returnSql"].Value) ;
關于“如何實現ADO測試程序”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。