VB中調(diào)用帶參數(shù)存儲過程的實現(xiàn)

字號:

VB做為快速應(yīng)用開發(fā)(RAD)工具越來越得到開發(fā)人員的認(rèn)可和接受。它對許多API(如ODBC API、SOCKET API等等)的封裝使得編程變得簡單起來。同時,它支持集成開發(fā)環(huán)境下的可視化、事件驅(qū)動、面向?qū)ο蟮染幊烫攸c。下面,我們談?wù)勗赩B中調(diào)用存儲過程的實現(xiàn)方法及其注意事項。
    我們知道,VB的數(shù)據(jù)庫編程有許多種方法,比如直接用ODBC API編程,這種方法靈活、高效,程序員可以實現(xiàn)對數(shù)據(jù)庫復(fù)雜的控制;也可以用VB中的數(shù)據(jù)對象,如RDO(遠(yuǎn)程數(shù)據(jù)對象)、DAO(數(shù)據(jù)訪問對象)、ADO(ActiveX 數(shù)據(jù)對象),這種方法實現(xiàn)起來方便、快捷,但靈活性較差一些。由于存儲過程在實現(xiàn)數(shù)據(jù)封裝、隱藏以及代碼的預(yù)編譯、減少網(wǎng)絡(luò)負(fù)載、維護方便等優(yōu)點,所以被許多RDBMS和編程工具做支持。VB中的各類數(shù)據(jù)對象也提供對存儲過程的支持。
    我們以ADO為例來說明其實現(xiàn)的步驟
    1. 創(chuàng)建、調(diào)試存儲過程。你可以在數(shù)據(jù)庫中也可以在其他外掛程序的支持下進行存儲過程的創(chuàng)建和調(diào)試工作。本例中的存儲過程代碼如下(使用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. 創(chuàng)建連接ADO connection;
    4. 創(chuàng)建命令A(yù)DO command;
    5. 創(chuàng)建參數(shù)并設(shè)置各個參數(shù)的屬性;
    6. 執(zhí)行ADO command;
    7. 對數(shù)據(jù)進行處理;MSFlexGrid顯示查詢到的數(shù)據(jù)
    8. 釋放連接,退出程序。
    其中代碼如下:
    在窗體中聲明以下變量:
    Dim cnn1 As ADODB.Connection ‘連接
    Dim mycommand As ADODB.Command ‘命令
    Dim parm_jobid As ADODB.Parameter ‘參數(shù)1
    Dim parm_joblvl As ADODB.Parameter ‘參數(shù)2
    Dim rstByQuery As ADODB.Recordset ‘結(jié)果集
    Dim strCnn As String ‘連接字符串
    在窗體的LOAD事件中加入如下代碼:
    Set cnn1 = New ADODB.Connection
    ‘生成一個連接
    strCnn = "DSN=MYDSN;uid=sa;pwd="
    ‘創(chuàng)建的系統(tǒng)數(shù)據(jù)源MYDSN指向PUBS數(shù)據(jù)庫
    cnn1.Open strCnn ‘打開連接
    在窗體的UNLOAD中的加入代碼如下:
    cnn1.Close ‘關(guān)閉連接
    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 ‘參數(shù)類型
    parm_jobid.Size = 3 ‘參數(shù)長度
    parm_jobid.Direction = adParamInput
    ‘參數(shù)方向,輸入或輸出
    parm_jobid.value = 100 ‘參數(shù)的值
    mycommand.Parameters.Append
    parm_jobid ‘加入?yún)?shù)