[ASP.NET] #4 SQL預存程序連線方法

本篇重點:

  • 四種預存程序
  • 預存程序連線

四種預存程序

建立完資料庫專案後,就可以開始在專案中下指令。 <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

  1. 新增語法
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 則是直接代入數值即可。

  1. 修改語法
CREATE Procedure usp_Upd_Uxxx (名稱)
    (
    @欄位1 資料型態,
    @欄位2 資料型態
    )
AS
UPDATE 資料表 SET 欄位1=@欄位1 WHERE 欄位2=@欄位2
GO
  1. 刪除語法
CREATE Procedure usp_Del_Dxxx (名稱)
    (
    @欄位 資料型態
    )
AS
DELECT FROM 資料表 WHERE 欄位 = @欄位 (條件)
GO
  1. 查詢語法
CREATE Procedure usp_Sel_Sxxx (名稱)
    (
    @欄位1 資料型態,
    @欄位2 資料型態
    )
AS
SELECT * FROM 資料表 WHERE 欄位1 = @欄位1,欄位2 = @欄位2(條件) 
GO

建立好的指令會長這樣 <br/> 螢幕擷取畫面 2023-07-11 202847 <br/> <br/> 完成後按右鍵 –> 執行 –> 若成功會出現「命令已順利完成」。<br/> 螢幕擷取畫面 2023-07-11 204150<br/><br/> 若要修改則是要先到資料庫刪除:可程式性–> 預存程序 –> 指令按右鍵刪除。<br/> 螢幕擷取畫面 2023-07-11 210226<br/><br/> 刪除後就可以重新執行預存程序。

預存程序連線

STEP 1:將 DBLink.vb 檔案直接加進 WEB 資料夾。<br/><br/> 螢幕擷取畫面 2023-07-11 200807<br/><br/> STEP 2:WEB 專案 (右鍵) –> 加入 –> 現有項目 –> 點擊加入剛剛的檔案。<br/> 螢幕擷取畫面 2023-07-11 200821<br/> 螢幕擷取畫面 2023-07-11 200834<br/><br/> STEP 3:修改專案名稱 打開 DBLink.vb –> 修改成設定的 WEB 專案名稱 <br/> 螢幕擷取畫面 2023-07-11 202006<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

完成後按執行,即可成功呼叫。

螢幕擷取畫面 2023-07-12 131113