• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    VB中調用帶參數存儲過程的實現

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 93次 | 進入軟件測試論壇討論

    領測軟件測試網 ---- VB做為快速應用開發(RAD)工具越來越得到開發人員的認可和接受。它對許多API(如ODBC API、SOCKET API等等)的封裝使得編程變得簡單起來。同時,它支持集成開發環境下的可視化、事件驅動、面向對象等編程特點。下面,我們談談在VB中調用存儲過程的實現方法及其注意事項。

    ---- 我們知道,VB的數據庫編程有許多種方法,比如直接用ODBC API編程,這種方法靈活、高效,程序員可以實現對數據庫復雜的控制;也可以用VB中的數據對象,如RDO(遠程數據對象)、DAO(數據訪問對象)、ADO(ActiveX 數據對象),這種方法實現起來方便、快捷,但靈活性較差一些。由于存儲過程在實現數據封裝、隱藏以及代碼的預編譯、減少網絡負載、維護方便等優點,所以被許多RDBMS和編程工具做支持。VB中的各類數據對象也提供對存儲過程的支持。

    ---- 我們以ADO為例來說明其實現的步驟

    ---- 1. 創建、調試存儲過程。你可以在數據庫中也可以在其他外掛程序的支持下進行存儲過程的創建和調試工作。本例中的存儲過程代碼如下(使用PUBS的MS SQL中的例子庫 ):

    CREATE PROCEDURE myprocedure
    @job_id smallint,
    @job_lvl tinyint
    AS
    SELECT *
    FROM employee
    WHERE job_id < @job_id
    AND job_lvl > @job_lvl

    ---- 2. 在VB中生成一個新的工程,工程有一窗體,一個COMMAND(NAME:COMMAND1) 按鈕,一個 MSFlexGrid(NAME:MSFlexGrid1)控件。
    ---- 3. 創建連接ADO connection;

    ---- 4. 創建命令ADO command;

    ---- 5. 創建參數并設置各個參數的屬性;

    ---- 6. 執行ADO command;

    ---- 7. 對數據進行處理;MSFlexGrid顯示查詢到的數據

    ---- 8. 釋放連接,退出程序。

    ---- 其中代碼如下:

    在窗體中聲明以下變量:
    Dim cnn1 As ADODB.Connection  ‘連接
    Dim mycommand As ADODB.Command ‘命令
    Dim parm_jobid As ADODB.Parameter ‘參數1
    Dim parm_joblvl As ADODB.Parameter ‘參數2
    Dim rstByQuery As ADODB.Recordset ‘結果集
    Dim strCnn As String  ‘連接字符串

    在窗體的LOAD事件中加入如下代碼:
    Set cnn1 = New ADODB.Connection  
    ‘生成一個連接
    strCnn = "DSN=MYDSN;uid=sa;pwd="
    ‘創建的系統數據源MYDSN指向PUBS數據庫
    cnn1.Open strCnn  ‘打開連接
    在窗體的UNLOAD中的加入代碼如下:
    cnn1.Close        ‘關閉連接
    Set cnn1 = Nothing ‘釋放連接

    在按鈕中的代碼如下:
       Dim i As integer
       Dim j as integer  
    Set parm_jobid = New ADODB.Parameter
    Set mycommand = New ADODB.Command
    ' parm_jobid.Name = "name1"
    this line can be ommited
    parm_jobid.Type = adInteger ‘參數類型
    parm_jobid.Size = 3        ‘參數長度
    parm_jobid.Direction = adParamInput
    ‘參數方向,輸入或輸出
    parm_jobid.value = 100      ‘參數的值
    mycommand.Parameters.Append
    parm_jobid  ‘加入參數
      

    Set parm_joblvl = New ADODB.Parameter
    ‘parm_joblvl.Name = "name2"
    parm_joblvl.Type = adInteger
    parm_joblvl.Size = 3
    parm_joblvl.Direction = adParamInput
    mycommand.value = 100
    mycommand.Parameters.Append parm_joblvl


    mycommand.ActiveConnection = cnn1   
    ‘指定該command 的當前活動連接
    mycommand.CommandText = " myprocedure "
    ‘myprocedure 是你要調用的存儲過程名稱
    mycommand.CommandType = adCmdStoredProc  
    ‘表明command 為存儲過程
    Set rstByQuery = New ADODB.Recordset
    Set rstByQuery = mycommand.Execute()
    i = 0
    Do While Not rstByQuery.EOF
    i = i + 1    ‘  i 中保存記錄個數
    rstByQuery.MoveNext
    Loop
    MSFlexGrid1.Rows = i + 1  
    ‘動態設置MSFlexGrid的行和列
    MSFlexGrid1.Cols = rstByQuery.Fields.Count + 1
    MSFlexGrid1.Row = 0
    For i = 0 To rstByQuery.Fields.Count - 1
    MSFlexGrid1.Col = i + 1
    MSFlexGrid1.Text = rstByQuery.Fields.Item(i).Name
    Next   ‘設置第一行的標題,用域名填充

    i = 0
    Set rstByQuery = mycommand.Execute()
    Do While Not rstByQuery.EOF
      i = i + 1
      MSFlexGrid1.Row = i  ‘確定行
      For j = 0 To rstByQuery.Fields.Count - 1
      MSFlexGrid1.Col = j + 1
      MSFlexGrid1.Text = rstByQuery (j)
    ‘添充所有的列
      Next
    rstByQuery.MoveNext   

    Loop  ‘這個循環用來填充MSFlexGrid的內容


    ---- 特殊說明
    ---- 1. Set recordset = command.Execute( RecordsAffected, Parameters, Options ) command.Execute RecordsAffected, Parameters, Options 這是command的兩種用法,一種有返回結果集,一種沒有返回結果集。

    ---- RecordsAffected:是指用update、delete操作時所影響的結果,對select的查詢,其值為-1;這和在Ms sql server 中的Query Analyzer中的不一樣。Query Analyzer中,select、update、delete的結果顯示的是實際查、改、刪的記錄數。

    ---- Options:指明command的類型,有adCmdText、adCmdTable、adCmdStoredProc等等,用戶可見MSDN。

    ---- 2.在參數的類型中,用戶可以用varchar來代替integer,系統會幫你自動實施轉化;

    ---- 3.本例中僅為帶輸入參數的存儲過程,如果要有輸出參數,根據MSDN的材料,用ADO不行。你可以用RDO數據對象,MSDN中有一個例子,此處不做過多贅述;

    ---- 4.可以不用ADO COMMAND對象,也可直接調用ADO CONNECTION的execute方法,結果很類似。 

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>