2013-07-24 132 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()之前),然后解析为整数(或大整数或任意需要的小数),然后检查更大比零。