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