4
我有以下SQL存儲過程,只有一個輸入參數和一個輸出參數。Command.ExecuteScalar總是返回null,而Management Studio中的存儲過程運行良好
CREATE PROCEDURE [dbo].[spCanUserEdit]
(
@username nvarchar(255)
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @CanEdit bit
SELECT
@CanEdit = CanUserEdit
FROM tblUsers
WHERE username = LOWER(@username)
RETURN SELECT @CanEdit
END
GO
在上面tblUsers
CanUserEdit
列中的存儲過程是位型柱,並用默認值0。現在,當我執行在Management Studio此過程中運行良好,但是當我在我的C#代碼中使用command.ExecuteScalar()
,它始終返回null
。任何人都可以告訴我我在這裏做錯了什麼。
以下是我的C#方法
public static bool CanUserEdit(string userName)
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[Constants.ConnectionStringName].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "spCanUserEdit";
cmd.Connection = conn;
cmd.Parameters.Add(new SqlParameter("@username", userName));
conn.Open();
bool canEdit = (bool)cmd.ExecuteScalar();
return canEdit;
}
}
}
親切的問候
非常感謝你......這讓我瘋狂了一陣子......我無法理解這個愚蠢的錯誤。順便問一下,如果我真的需要在這裏返回0嗎? –
很高興幫助:)我編輯了我的答案,在代碼中包含可能的修復而不是SP。 – dna2