針對QTP連線oracle資料庫問題總結
首先,因為群裡很多朋友說QTP連線oracle有點麻煩,我針對於連線oracle做一個完整的教程,希望需要學習的朋友都可以來看一下;具體方法如下:
1、無論是什麼語言,連線oracle客戶端是不可少的,這個是沒辦法省的;我用的是10g_win32_client;如果覺得老,朋友們可以用新版本的;
解壓-安裝-著方面無非就是下一步操作,這邊我們不講,配置可能有些初學者不會,我這邊從配置開始講;
①
這邊圖片大概的描述了一下步驟,如果還是不會,可以百度上找如果配置oracle客戶端,裡面比較詳細
2、配置 資料來源(ODBC)(針對win7的配置)
①-開啟控制面板-系統和安全-管理工具-資料來源(ODBC)
新增使用者資料源
選擇oracle驅動
填寫對應資訊
測試是否連線成功
這樣odbc就算配置完成了;
3、開始連線資料庫;
獲取oracle的連線串的方法,在本地新建一個.txt檔案,修改副檔名名*.udl,雙擊*.udl檔案,開啟資料庫連結屬性,定位到“提供程式”選顯示卡,選中 oracle的連線 oracle provider for OLE DB,點選下一步,輸入資料來源,資料庫使用者名稱以及密碼,點選測試連線,然後用UE或記事本開啟*.udl檔案,oracle的連線串已經生成了,
如圖:
這樣就算配置成功了,然後用文字開啟oracle.udl,
Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=BPMUSER2;Data Source=CEDATA
新增密碼:用;號分開:Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=BPMUSER2;;Password=BPMUSER2;Data Source=CEDATA
然後寫qtp測試
'——————————————————————————————————————————— '名稱:oracle_nextAPPROVEID '作用:資料庫中查詢出下一步審批人 '引數:FormID '返回:下一步審批人 '使用:QTP.oracle_nextAPPROVEID("-") Function oracle_nextAPPROVEID(FormID) Dim Cnn '定義一個數據庫連線串 Dim Rs Dim sql Dim uid Set Cnn = CreateObject("ADODB.Connection") Cnn.Open ="Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=BPMUSER2;;Password=BPMUSER2;Data Source=CEDATA" If Cnn.State = 0 Then '判斷資料庫連線是否成功 Report.Debug("[Cnn.State] Cnn.State = " & Cnn.State) Report.FunctionOut("[Cnn.State] Cnn.State = " & Cnn.State) Exit Function End If If Cnn.State<> 0 Then Report.Debug("[Cnn.State] Cnn.State = " & Cnn.State) Set Rs=CreateObject("ADODB.Recordset") '生成記錄集物件 'FormID= chr(34)&FormID&chr(34) Report.Debug("[FormID] FormID = " & FormID) sql ="select * from(select b.ID,a.PROCESSID,APPROVEID from FORM_MASTER_INFO a inner join FORM_HISTORY_INFO b on a.PROCESSID=b.PROCESSID and a.FORMRESULT='N' WHERE a.PROCESSID= '"&FormID&"' order by b.ID desc) where rownum=1" Report.Debug("[sql] sql = " & sql) On Error Resume next Rs.Open sql ,Cnn,1,3 '執行sql語句,記錄可以自由移動,單數記錄處於只讀模式 uid=Rs("APPROVEID") '取得欄位為custid的記錄,遊標定義在第一行,所以取得的是該欄位所在行的第一行資料 Report.Debug("[uid] uid = " & uid) oracle_nextAPPROVEID ="("& uid&")" 'msgbox uid End If End Function
呼叫一下,就可以完成了;做的完善點需要關閉連線等等
RS.close '關閉記錄集
Set RS=nothing '釋放物件
Cnn.Close '關閉資料連線
Set Cnn=nothing '釋放物件
這些都是後話了。