0
我正在做一個測試,看看連接字符串的用戶ID是否是一個sys Admin。從proc返回一個位值? NullReference異常被捕獲?
但是,當我嘗試返回位的值時,我的代碼不斷破壞?
爲此,我使用下面的存儲過程:
ALTER PROCEDURE [dbo].[CheckIfAdmin]
@SQLLoginName nvarchar(50),
@IsAdmin bit OUTPUT
As
SET @IsAdmin = IS_SRVROLEMEMBER('sysadmin', @SQLLoginName)
Print @IsAdmin
Select @IsAdmin
並檢索我使用下面的C#代碼值:
public bool CheckIfIsAdmin(string procedure, SqlParameter[] parameters)
{
try
{
SqlCommand cmd1 = new SqlCommand(procedure, con);
cmd1.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter p in parameters)
{
cmd1.Parameters.Add(p);
}
SqlParameter IsAdmin = new SqlParameter("@IsAdmin", SqlDbType.Bit);
IsAdmin.Direction = ParameterDirection.Output;
cmd1.Parameters.Add(IsAdmin);
con.Open();
con.Close();
MessageBox.Show("Is a admin = " + IsAdmin.Value.ToString()); // this should display 1 or 0
return ture
}
catch (Exception ex)
{
MessageBox.Show("" + ex);
return false;
}
}
錯誤消息:
NullReference異常被抓住了。 未將對象引用設置爲對象的實例。
它現在跳出:cmd1.ExecuteNonQuery();並顯示以下消息:無法將參數值從字符串轉換爲日期時間。 – Pomster
驗證SP參數類型。 – adatapost