2013-07-24 106 views
1

事情是我有這樣的代碼SqlCommand.ExecuteScalar避免空

var ojv = xmd.ExecuteScalar().ToString(); 
     if (ojv != null) 
     { 
      Console.WriteLine(ojv); 
      var up = CreateQuery(); 
      up.CommandText = "UPDATE characters SET [email protected] WHERE [email protected] AND [email protected];"; 
      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 [email protected] AND [email protected];"; 
      del.Parameters.AddWithValue("@accId", acc.AccountId); 
      del.Parameters.AddWithValue("@chrId", charId); 
      del.ExecuteNonQuery(); 
     } 

但是,如果世界上沒有ovj它返回null,我需要避免的是,有沒有什麼辦法讓的ExecuteScalar習慣,如果沒有值返回null被發現?

+1

你想讓它返回什麼? –

+0

只要不返回任何東西 –

+0

那麼空?或者你的意思是''「'? –

回答

2

只需在調用ToString()之前檢查null即可。

var result = xmd.ExecuteScalar(); 
     if (result != null) 
     { 
      var ojv = result.ToString(); 
      Console.WriteLine(ojv); 
      var up = CreateQuery(); 
      up.CommandText = "UPDATE characters SET [email protected] WHERE [email protected] AND [email protected];"; 
      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 [email protected] AND [email protected];"; 
      del.Parameters.AddWithValue("@accId", acc.AccountId); 
      del.Parameters.AddWithValue("@chrId", charId); 
      del.ExecuteNonQuery(); 
     } 
2

ExecuteScalar返回一個數字,如果沒有結果集,則返回null,因此您首先需要檢查null(應用ToString()之前),然後解析爲整數(或大整數或任意需要的小數),然後檢查更大比零。