[英]how to get bool value from c# stored procedure
我使用了以下代碼:
SQL中的存儲過程:
Alter PROCEDURE [dbo].[Get_Customize_Status_By_OrderId]
@Order_id varchar(50)
AS
BEGIN
select Customize_Status from dbo.ClientOrder where Order_id=@Order_id
END
GO
在c#中調用該存儲過程:
public static bool getcustomizestatusbyorderid(string orderid)
{
bool result = false;
try
{
Database db = new SqlDatabase(connectionstring);
DbCommand cmd1 = db.GetStoredProcCommand("[dbo].[Get_Customize_Status_By_OrderId]");
db.AddInParameter(cmd1, "@Order_id",DbType.String,orderid);
int RowAffected = db.ExecuteScalar(cmd1);
}
catch (Exception ex)
{
}
}
請告訴我如何在C#中獲取customize_status
值?
ExecuteScalar
返回選擇的第一個單元格,因此在您的示例中將返回該單元格; 您需要做的就是將object
( 這是ExecuteScalar
返回的值 ) ExecuteScalar
為int
:
int status = (int)db.ExecuteScalar(cmd1);
(假設Customize_Status
是一個int
等)
請注意,您可能想檢查零行導致的null
:
object result = db.ExecuteScalar(cmd1);
if(result == null) {
// no rows
} else if (result is DBNull) {
// at least one row; first cell was a database null
} else {
// at least one row; first cell was non-null
int status = (int)result;
// ...
}
“行受影響”讓我覺得你是混淆ExecuteNonQuery
,其中坦率地返回值是很少有意義的反正 。
另外:ent-lib? 真? 為什么?
你可以這樣
bool exists = (int)db.ExecuteScalar(cmd1) == 1;
return exists;
嘗試這個
bool customize_status = (RowAffected > 0);
如果找到記錄,它將返回true
為了以一種可以理解的方式將布爾值返回到C#前端,我這樣做:
SELECT CASE WHEN Customize_Status = 0 THEN 'false' ELSE 'true' END AS [Customize_Status]
然后,無論您如何在前端獲取數據,都可以編寫(假設您將其作為值返回到數據讀取器的數據行中)...
bool Customize_Status = Convert.ToBoolean(dr["Customize_Status"].ToString());
這是我發現從SQL Server數據庫中獲取布爾變量並進入C#前端以便將其分配給布爾變量的唯一方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.