SQL Server 存储过程并在 VB.NET 中执行

Posted

技术标签:

【中文标题】SQL Server 存储过程并在 VB.NET 中执行【英文标题】:SQL Server stored procedure and execute in VB.NET 【发布时间】:2012-04-29 15:19:34 【问题描述】:

这是一个有点老的内容要讨论,但我需要有人可以解释我如何在 SQL Server 中创建存储过程以从过程中返回一个值,例如:

SELECT NAME, ADDRESS 
FROM CUSTOMER 
WHERE IDCUSTOMER = 'DS212';

然后我需要它的客户名称和地址。

我需要将它作为一个存储过程,并告诉我如何在 VB.NET 上执行它。或许我们假设名称会提示为LABEL1.TEXT,地址会提示为LABEL2.TEXT。

我已经使用 return 改进了这个 SQL-Server 存储过程,但是在执行之后我没有什么可以返回

CREATE PROCEDURE inserting_customer
            @custId varchar(10),
            @usr_id int
AS
BEGIN 
SET @usr_id = (SELECT MAX(SUBSTRING(CUSTOMER.idCustomer,3, LEN(CUSTOMER.IDCUSTOMER))) FROM CUSTOMER
WHERE 
SUBSTRING(CUSTOMER.idCustomer,1,2) = @custId)
END
RETURN @usr_id
GO

这是我的 VB.NET

  conn.Open()

        Dim cmd As New SqlCommand("inserting_customer", conn)

        Try
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.Add("@custId", SqlDbType.VarChar)
            cmd.Parameters("@custId").Value = "YW"
            cmd.Parameters.Add("@usr_id", SqlDbType.Int)
            cmd.Parameters("@usr_id").Value = 0
            cmd.ExecuteNonQuery()
        Finally
            If cmd IsNot Nothing Then cmd.Dispose()
            If conn IsNot Nothing AndAlso conn.State <> ConnectionState.Closed Then conn.Close()
        End Try

【问题讨论】:

一点解释可能对我有很大帮助,而不是谷歌它。我知道它的努力,但也许我正在寻找一个简单的代码而不是谷歌提供的复杂代码:) 谢谢你之前 【参考方案1】:

假设你在 sqlserver 中有这个存储过程

CREATE PROCEDURE GetNameAddress(@custID nvarchar(10))
as
BEGIN
SELECT NAME,ADDRESS FROM CUSTOMER WHERE IDCUSTOMER = @custID;
END

你调用它并以标准方式得到结果

' GetConnection is a method that creates and return the '
' SqlConnection used here according to your connection string'
Using cn = GetConnection()
   cn.Open()

   ' Create the command with the sproc name and add the parameter required'
   Dim cmd As SqlCommand = new SqlCommand("GetNameAddress", cn)
   cmd.CommandType = CommandType.StoredProcedure
   cmd.Parameters.AddWithValue("@custID", "DS212")

   ' Ask the command to create an SqlDataReader on the result of the sproc'
   Using r = cmd.ExecuteReader()

       ' If the SqlDataReader.Read returns true then there is a customer with that ID'
       if r.Read() then

           ' Get the first and second field frm the reader'
           lblName.Text = r.GetString(0)
           lblAddress.Text = r.GetString(1)
       end if
   End Using
End using

请注意,当您期望存储过程返回零或一条记录时,这是标准方法。如果您有多个记录,则在 SqlDataReader.Read 方法上使用 while 循环,并且您应该提供存储返回记录的控件。

【讨论】:

尊重这个答案!非常感谢您提供语法和清晰的解释!上帝保佑你......喜欢这个

以上是关于SQL Server 存储过程并在 VB.NET 中执行的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 中的存储过程未使用 VB.Net 编码填充 ASP.Net 下拉列表

如何使用 VB.NET 配置 DataAdapter 以使用 Sql Server 存储过程执行 Select、Update、Insert 和 Delete 命令?

慢速存储过程 - SQL Server

从 sql 调用和执行存储过程到 vb.net 文本框

调用 SQL Server 存储过程的 SqlCommand 超时

如何将 vb.net 中日期的空值传递给 sql 存储过程?