如何从vb.net执行SQL Server存储过程

时间:2013-06-10 16:30:29

标签: sql-server vb.net stored-procedures execute procedure

我在sql server中创建了一个存储过程;我试图在vb.net中执行,但由于某些原因它无法正常工作。有人可以帮忙吗?

这是我创建的程序;在sql server中工作正常:

CREATE PROCEDURE PRC_CUS_ADD 
(@CATEGORY_NAME Varchar(30), @BRAND_NAME Varchar(30), @PRODUCT_DETAIL Varchar(30), @SALE_QUANTITY Numeric(9,2), @SALE_PRICE Numeric(9,2), @SALE_TOTAL_PRICE Numeric(9,2), @SALE_DATE datetime, @CUSTOMER_ID int, @PRODUCT_ID int, @CREDIT_PAYMENT bit)
AS
BEGIN
INSERT INTO SALE(SALE_ID, CATEGORY_NAME, BRAND_NAME, PRODUCT_DETAIL, SALE_QUANTITY, SALE_PRICE, SALE_TOTAL_PRICE, SALE_DATE, CUSTOMER_ID, PRODUCT_ID, CREDIT_PAYMENT) VALUES (NEXT VALUE FOR SALE_Sequence, @CATEGORY_NAME, @BRAND_NAME, @PRODUCT_DETAIL, @SALE_QUANTITY, @SALE_PRICE, @SALE_TOTAL_PRICE, @SALE_DATE, @CUSTOMER_ID, @PRODUCT_ID, @CREDIT_PAYMENT)
END;

这是我在VB.net中执行该过程所编写的代码:

        Dim cn As New SqlConnection("")
        Dim cmd As New SqlCommand
        Dim dr As SqlDataReader
        cmd.Connection = cn

        cn.Open()
        Dim cmd As SqlCommand = New SqlCommand("PRC_CUS_ADD", cn)
        cmd.CommandType = CommandType.StoredProcedure

        cmd.Parameters.Add("@CATEGORY_NAME", SqlDbType.VarChar).Value = ComboBox1.Text
        cmd.Parameters.Add("@BRAND_NAME", SqlDbType.VarChar).Value = ComboBox2.Text
        cmd.Parameters.Add("@PRODUCT_DETAIL", SqlDbType.VarChar).Value = ComboBox3.Text
        cmd.Parameters.Add("@SALE_QUANTITY", SqlDbType.Decimal).Value =txtQUANTITY.Text
        cmd.Parameters.Add("@SALE_PRICE", SqlDbType.Decimal).Value = txtPRICE.Text
        cmd.Parameters.Add("@SALE_TOTAL_PRICE", SqlDbType.Decimal).Value =txtTOTAL.Text
        cmd.Parameters.Add("@ALE_DATE", SqlDbType.Date).Value = dtp.Value
        cmd.Parameters.Add("@CUSTOMER_ID", SqlDbType.Int).Value = txtCustomerId.Text
        cmd.Parameters.Add("@PRODUCT_ID", SqlDbType.Int).Value = txtPRODUCT.Text
        cmd.Parameters.Add("@CREDIT_PAYMENT", SqlDbType.Bit).Value = credit.CheckState

        dr = cmd.ExecuteReader()
        cn.Close()

请帮忙!我只是不知道代码有什么问题。谢谢。

1 个答案:

答案 0 :(得分:3)

您使用了" ExecuteReader"但实际上您的过程不会返回任何结果集。你应该使用" ExecuteNonQuery"。