1. 程式人生 > >針對QTP連線oracle資料庫問題總結

針對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 '釋放物件

這些都是後話了。