当前位置:编程学习 > C#/ASP.NET >>

VB.NET如何调用带返回参数和数据集的“存储过程”

VB.NET如何调用带返回参数和数据集的“存储过程”
比如下面的存储过程


SET  ANSI_NULLS  ON
GO
SET  QUOTED_IDENTIFIER  OFF
GO

ALTER  PROCEDURE  [dbo].[SSD_sp_AS_scjh]
@AAA  char(2),
@lcErrMsg  varchar(500)  output  
@dsfs  varchar(40)  output  
AS

SELECT @dsfs='dfas'
IF  @AAA=''  
  BEGIN
    SELECT  @lcErrMsg='ASSADFSAD'
    RETURN
  END
  
select * from asdfasd



--------------------编程问答-------------------- /// 执行一个存储过程,并且返回存储过程的返回值。
/// 存储过程中必须包含 RETURN 语句,否则方法返回 null。
/// </summary>
/// <param name="procedureName">存储过程名</param>
/// <param name="parameters">存储过程的参数</param>
/// <returns>如果存储过程无返回值或返回值为 null,则方法返回 null。否则方法返回存储过程的 RETURN 值。</returns>
public static object GetProcReturnValue(string procedureName, SqlParameter[] parameters) {
object obj = null;
using (SqlConnection con = new SqlConnection(ConnectionString)) {
SqlCommand cmd = CreateCommand(procedureName, con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter pReturnValue = cmd.CreateParameter();
pReturnValue.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(pReturnValue);
if (parameters != null)
cmd.Parameters.AddRange(parameters);
cmd.ExecuteNonQuery();
obj = pReturnValue.Value;
}
return obj;
} --------------------编程问答-------------------- 刚好我正在写你看下吧
  Private sqlcon As SqlConnection
    Private sqlcmd As SqlCommand
    Private sqladp As SqlDataAdapter

    Private ID As Integer
    Public Property _ID() As Integer
        Get
            Return ID
        End Get
        Set(ByVal value As Integer)
            Me.ID = value
        End Set
    End Property

    Private GroupID As String
    Public Property _GroupID() As String
        Get
            Return Me.GroupID
        End Get
        Set(ByVal value As String)
            Me.GroupID = value
        End Set
    End Property

    Private ItemID As String
    Public Property _ItemID() As String
        Get
            Return Me.ItemID
        End Get
        Set(ByVal value As String)
            Me.ItemID = value
        End Set
    End Property

    Private Rights As String
    Public Property _Rights() As String
        Get
            Return Me.Rights
        End Get
        Set(ByVal value As String)
            Me.Rights = value
        End Set
    End Property

    Public Function select_Rights() As DataSet
        Return GetDataSet("ss", Nothing)

    End Function



    Private Function CreateCmd(ByRef sqlcon As SqlConnection, ByVal sqltxt As String, ByRef paras() As IDataParameter) As SqlCommand
        Me.sqlcmd = New SqlCommand(sqltxt, sqlcon)
        Me.sqlcmd.CommandType = CommandType.StoredProcedure

        If Not paras Is Nothing Then
            For Each para As SqlParameter In paras
                Me.sqlcmd.Parameters.Add(para)
            Next

        End If
        Return Me.sqlcmd
    End Function


    Private Function ExecuteNonQuery(ByRef sqlcontxt As String, ByRef paras() As IDataParameter) As Integer
        Me.sqlcon = New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)

        Me.sqlcmd = CreateCmd(Me.sqlcon, sqlcontxt, paras)

        Try
            Me.sqlcon.Open()
            Return Me.sqlcmd.ExecuteNonQuery()
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try

    End Function

    Private Function GetDataSet(ByRef sqlcontxt As String, ByRef paras() As IDataParameter) As DataSet
        Me.sqlcon = New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)

        Me.sqlcmd = CreateCmd(Me.sqlcon, sqlcontxt, paras)

        Me.sqladp = New SqlDataAdapter(Me.sqlcmd)

        Dim ds As New DataSet()

        sqladp.Fill(ds)

        Return ds
    End Function


没写注释凑合看吧 --------------------编程问答-------------------- Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("SqlServer").ToString())
conn.Open()
Dim MyCommand As New SqlCommand("MYSQL", conn)
MyCommand.CommandType = CommandType.StoredProcedure
MyCommand.Parameters.Add(New SqlParameter("@a", SqlDbType.Int))
MyCommand.Parameters("@a").Value = 20
MyCommand.Parameters.Add(New SqlParameter("@b", SqlDbType.Int))
MyCommand.Parameters("@b").Direction = ParameterDirection.Output
MyCommand.ExecuteNonQuery()
Response.Write(MyCommand.Parameters("@b").Value.ToString())
End Using
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,