本篇重點:
- 四種預存程序
- 預存程序連線
四種預存程序
建立完資料庫專案後,就可以開始在專案中下指令。 <br/><br/> DB_xxx (右鍵) –> 加入 –> 現有項目 –> 現有的SQL檔案。
【補充】命名規則<br/> [新增] usp_Add_Axxx;[修改] usp_Upd_Uxxx;[刪除] usp_Del_Dxxx;[查詢] usp_Sel_Sxxx <br/> 若有許多相同功能的SQL檔,則在後方加上編號,ex:usp_Add_AName1。<br/>
基本上,指令與在資料庫下的指令是相同的,只是會需要將參數傳入。
檔案在這:usp_Sel_SPlayer1.sql
- 新增語法
CREATE Procedure usp_Add_Axxx (名稱)
(
@欄位1 資料型態,
@欄位2 資料型態,
@欄位3 資料型態,
)
AS
INSERT INTO 資料表 (欄位1,欄位2,欄位3,欄位4,欄位5) VALUES (@欄位1,@欄位2,@欄位3,數值,數值)
GO
欄位 1、2、3 設定為參數,所以在 VALUES( ) 中要加上 @,才能夠抓取值;欄位 4、5 則是直接代入數值即可。
- 修改語法
CREATE Procedure usp_Upd_Uxxx (名稱)
(
@欄位1 資料型態,
@欄位2 資料型態
)
AS
UPDATE 資料表 SET 欄位1=@欄位1 WHERE 欄位2=@欄位2
GO
- 刪除語法
CREATE Procedure usp_Del_Dxxx (名稱)
(
@欄位 資料型態
)
AS
DELECT FROM 資料表 WHERE 欄位 = @欄位 (條件)
GO
- 查詢語法
CREATE Procedure usp_Sel_Sxxx (名稱)
(
@欄位1 資料型態,
@欄位2 資料型態
)
AS
SELECT * FROM 資料表 WHERE 欄位1 = @欄位1,欄位2 = @欄位2(條件)
GO
建立好的指令會長這樣 <br/>
<br/> <br/>
完成後按右鍵 –> 執行 –> 若成功會出現「命令已順利完成」。<br/>
<br/><br/>
若要修改則是要先到資料庫刪除:可程式性–> 預存程序 –> 指令按右鍵刪除。<br/>
<br/><br/>
刪除後就可以重新執行預存程序。
預存程序連線
STEP 1:將 DBLink.vb 檔案直接加進 WEB 資料夾。<br/><br/>
<br/><br/>
STEP 2:WEB 專案 (右鍵) –> 加入 –> 現有項目 –> 點擊加入剛剛的檔案。<br/>
<br/>
<br/><br/>
STEP 3:修改專案名稱
打開 DBLink.vb –> 修改成設定的 WEB 專案名稱 <br/>
<br/><br/>
STEP 4:DBLink 程式碼
'查詢姓名資料
Public Function usp_Sel_SName1(ByVal strA1 As String) As DataSet
Dim strCommand As String = "usp_Sel_SName1"
Dim strTableName As String = "SName1"
Dim dbCheck As New DB_Test.DB.ClassDB
Dim dsDone As New DataSet()
Dim spParams As SqlParameter() = Nothing
dbCheck.htParam.Clear()
dbCheck.htParam.Add("@A1", strA1)
spParams = dbCheck.getSpParams(0)
dsDone = dbCheck.RunProcedure(strCommand, spParams, strTableName)
Return dsDone
End Function
STEP 5:頁面布局
- 前端程式:在 .aspx 拉一個 Label)
<asp:Label ID="NameLB" runat="server" Text=""></asp:Label>
- 後端程式:
Dim SName1 As New WEB_Test.DB.DBLink '宣告資料庫連線變數
Dim dt1 As New DataSet '宣告表格資料
dt1 = SName1.usp_Sel_SName1("1") '將副程式的資料丟進 dt1 中 (1 為傳入的參數)
'判斷是否有資料
If dt1.Tables(0).Rows.Count <> 0 Then
NameLB.Text = dt1.Tables(0).Rows(0).Item(0).ToString()
'Table=第n張表格 , Rows=第n列資料 , Item=第n個欄位
Else
NameLB.Text = "沒資料"
End If
多筆資料的寫法 (搭配 FOR 迴圈):
'有 i 筆資料
For i = 0 To dt1.Tables(0).Rows.Count - 1
'有 j 個欄位
For j = 0 To 3
NameLB.Text = dt1.Tables(0).Rows(i).Item(j).ToString() & ","
Next
'將每一筆換行
NameLB.Text = NameLB.Text & "<br/>"
Next
完成後按執行,即可成功呼叫。
