1 つの入力パラメーターと 1 つの出力パラメーターを持つ次の SQL ストアド プロシージャがあります。
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
CanUserEdit
上記の列のストアド プロシージャtblUsers
はビット型の列で、デフォルト値は 0 です。Management Studio でこのプロシージャを実行すると問題なく実行されますcommand.ExecuteScalar()
が、C# コードで使用すると、常に が返されます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;
}
}
}
敬具