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ù)
我們知道,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ù)

