![](/img/trans.png)
[英]InvalidOperationException on SqlCommand.ExecuteScalar()
[英]SqlCommand.ExecuteScalar avoid null
問題是我有這個代碼
var ojv = xmd.ExecuteScalar().ToString();
if (ojv != null)
{
Console.WriteLine(ojv);
var up = CreateQuery();
up.CommandText = "UPDATE characters SET items=@items WHERE accId=@accId AND charId=@charId;";
up.Parameters.AddWithValue("@items", ojv);
up.Parameters.AddWithValue("@accId", acc.AccountId);
up.Parameters.AddWithValue("@charId", charId);
up.ExecuteNonQuery();
var del = CreateQuery();
del.CommandText = "DELETE FROM shop WHERE accId=@accId AND chrId=@chrId;";
del.Parameters.AddWithValue("@accId", acc.AccountId);
del.Parameters.AddWithValue("@chrId", charId);
del.ExecuteNonQuery();
}
但是如果沒有ovj它返回null,我需要避免這種情況,有沒有辦法讓ExecuteScalar在沒有找到值的情況下不會返回null?
ExecuteScalar返回一個數字,如果沒有結果集,則返回null,因此您首先需要檢查null(在應用ToString()之前),然后解析為整數(或大整數,或小數,無論您需要什么)並檢查大於零。
在調用ToString()之前,請檢查null。
var result = xmd.ExecuteScalar();
if (result != null)
{
var ojv = result.ToString();
Console.WriteLine(ojv);
var up = CreateQuery();
up.CommandText = "UPDATE characters SET items=@items WHERE accId=@accId AND charId=@charId;";
up.Parameters.AddWithValue("@items", ojv);
up.Parameters.AddWithValue("@accId", acc.AccountId);
up.Parameters.AddWithValue("@charId", charId);
up.ExecuteNonQuery();
var del = CreateQuery();
del.CommandText = "DELETE FROM shop WHERE accId=@accId AND chrId=@chrId;";
del.Parameters.AddWithValue("@accId", acc.AccountId);
del.Parameters.AddWithValue("@chrId", charId);
del.ExecuteNonQuery();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.