程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> SqlCommandBuilder.DeriveParameters設置儲存過程參數

SqlCommandBuilder.DeriveParameters設置儲存過程參數

編輯:.NET實例教程
SqlCommandBuilder.DeriveParameters設置儲存過程參數
之前我一直都用手寫的方法,手動添加存儲過程參數,實在的麻煩無與,這兩天突然在書上看到這個方法,而且在網上查了,對性能也沒有太大影響,所以就開始動手使用!網上多是使用C#的實例,但我又是vb.net的忠實fans,所以就准備把他改在vb.Net,沒想在這個過程還碰到了很多問題,經過無數次的調試終於搞定,寫出來供大家享用,從此的我們的數據層就更加強壯了呀!

數據層: mydata.vb



Option Strict Off
Option Explicit On
Imports system.data
Imports system.data.sqlclIEnt
Imports Microsoft.VisualBasic
Imports System.XML
Imports System.IO

Public Class mydataClass mydata
Private connectionstring As String
    Dim cn As SqlConnection
    Public Sub New()Sub New()
        MyBase.New()
    End Sub
    Public Sub open()Sub open()
        connectionstring = System.Configuration.ConfigurationManager.APPSettings("connectionstring").ToString.Trim
        cn = New SqlConnection(connectionstring)
        If cn.State = ConnectionState.Open Then
            cn.Close()
        End If
        cn.Open()
    End Sub
    Public Sub closed()Sub closed()
        cn.Close()
    End Sub

    '''''' <summary>
    '''''' 根據存儲過程與參數值返回sqlcommand對象
    '''''' </summary>
    '''''' <param name="spname">存儲過程名</param>
    '''''' <param name="spvalue">參數數組</param>
    '''''' <returns></returns>
    '''''' <remarks></remarks>
    Public Function sqlcom()Function sqlcom(ByVal spname As String, ByVal spvalue As Object()) As SqlCommand
        Dim com As SqlCommand = New SqlCommand(spname, cn)
        com.CommandType = CommandType.StoredProcedure
        Me.open()
        SqlCommandBuilder.DeriveParameters(com)    ''將存儲過程參數同給com對象,通過com.Parameters返回
        Me.closed()
        Dim spc As SqlParameter() = New SqlParameter(com.Parameters.Count - 1) {}  
                            ''返回數組,記住減1因為後面會產生一個為nothing的參數
        com.Parameters.CopyTo(spc, 0)  ''復制數組,從0開始
        com.Parameters.Clear()         ''復制完以後一定要清空,不然不能添加新參數
        For j As Integer = 0 To&nbsp;spc.Length - 1
            spc(j).Value = spvalue(j).ToString   ''賦值參數,記住會產生一個@return_value的多余參數為apc(0)
            com.Parameters.Add(spc(j))       
        Next
        com.Dispose()
        Return com
    End Function
    '''''' <summary>
    '''''' 根據存儲過程返回表
    '''''' </summary>
    '''''' <param name="spname">存儲過程</param>
    '''''' <param name="spvalue">值數組</param>
    '''''' <returns></returns>
    '''''' <remarks></remarks>
    Public Function getTable()Function getTable(ByVal spname As String, ByVal spvalue As Object()) As DataTable
        Me.open()
        Dim com As SqlCommand = Me.sqlcom(spname, spvalue)
        Dim sdt As SqlDataAdapter = New SqlDataAdapter(com)
        Dim ds As DataSet = New DataSet
        sdt.Fill(ds)
        Dim dt As DataTable = ds.Tables(0)
        Me.closed()
        Return dt
    End Function
End Class

業務層:

 



Imports Microsoft.VisualBasic
Imports data
Imports System.Data

Namespace perNamespace per
    Public Class perClass per
        Inherits data
        Dim _spname As String
        Public Property searchid()Property searchid() As String
            Get
                Return VIEwState("searchid")
            End Get
            Set(ByVal value As String)
                VIEwState("searchid") = value
            End Set
        End Property
        Public Property spname()Property spname() As String
            Get
                Return _spname
            End Get
        &nbsp;   Set(ByVal value As String)
                _spname = value
            End Set
        End Property
        Public Function get_table()Function get_table() As DataTable
            Dim spvalue As Object() = New Object() {0, searchid}     ''此時賦值一定要寫一個整數0,後面是我們的參數
            Dim dt As DataTable = MyBase.getTable(spname, spvalue)
            Return dt
        End Function

    End Class
End Namespace

表示層:

 



Imports System
Imports System.Data
Imports System.Web
Imports System.Web.UI.WebControls
Imports AJax
Imports data
Imports System.IO
Imports per
Partial Class perindexClass perindex
    Inherits System.Web.UI.Page
    Dim searchid As String
    Protected Sub Page_Load()Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            bind_gridvIEw()
        End If
    End Sub
    Public Sub bind_gridview()Sub bind_gridvIEw()
        If searchid Is Nothing Or searchid = String.Empty Then
            searchid = 0
        End If
        Dim myper As per.per = New per.per
        myper.spname = "bind_per"
        myper.searchid = searchid
        Dim dt As DataTable = myper.get_table()
        pergridview.DataSource = dt.DefaultVIEw
        pergridvIEw.DataBind()
    End Sub
End Class

 這裡面我主要是產生一個sqlcommand對象供大家調用,擴展大家可以自己隨意了!水平有限,就寫到這裡!!
 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved