簡體   English   中英

程序未將參數發送到存儲過程

[英]Program doesn't send parameters to stored procedure

我寫了一個程序,該程序根據ID選擇並應從gridview中刪除一行,但是它引發了一個異常,即未向存儲過程提供@ComplainantTypeID但是我在調​​試中進行了檢查,它發送並添加了值,但仍然引發異常。

碼:

protected void btnDeletePopUp_Click(object sender, EventArgs e)
{
        try
        {
            int ComplainantTypeID = Convert.ToInt32(txtSelectedID.Text.Trim());
            ManageComplainantType mngComplainantType = new ManageComplainantType();
            mngComplainantType.Delete(ComplainantTypeID);
            Clear(txtName, txtSelectedID);
            HiddenFieldSetMessage.Value = "Delete";
            HiddenFieldShowMessage.Value = "True";
        }
        catch (Exception)
        {
            HiddenFieldSetMessage.Value = "NotDeleted";
            HiddenFieldShowMessage.Value = "True";
        }
    }

BLL中的刪除功能:

public void Delete(int ComplainantTypeID)
{
            SqlCommand cmd = new SqlCommand("DeleteComplainantTypes_SP", DataBaseConnection.OpenConnection());
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter pComplainantTypeID = new SqlParameter("@ComplainantTypeID", ComplainantTypeID);
            cmd.Parameters.Add(pComplainantTypeID);
            cmd.ExecuteNonQuery();
            DataBaseConnection.CloseConnection();
}

存儲過程:

PROCEDURE [dbo].[DeleteComplainantTypes_SP]
    @ComplainantTypeID smallint
AS
BEGIN
   BEGIN TRY
       DELETE FROM ComplainantTypes WHERE ComplainantTypeID = @ComplainantTypeID
   END TRY
   BEGIN CATCH
       SELECT ERROR_MESSAGE() AS ErrorMessage
   END CATCH
END

您必須顯示異常以獲得更好的幫助,但是問題實際上出在數據類型上。 您通過int但期望的是smallint 查看“ SQL Server數據類型映射”文章以選擇適當的數據類型。

更新

您不能將int轉換為smallint ,必須傳遞short類型的參數,該參數映射到smallint sql類型。

宣布

public void Delete(short ComplainantTypeID)

代替

public void Delete(int ComplainantTypeID)

並保持SP不變。

嘗試

cmd.Parameters.AddWithValue("@ComplainantTypeID", value);

要么

SqlParameter pComplainantTypeID = new SqlParameter("@ComplainantTypeID",SqlDbType.SmallInt,value);

嘗試這個

 sqlCommand.Parameters.Add("@ComplainantTypeID", SqlDbType.Int).Value = ComplainantTypeID;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM