我在应用程序中遇到上述错误。这是原始代码
public string GetCustomerNumber(Guid id) { string accountNumber = (string)DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidmyApp, CommandType.StoredProcedure, "GetCustomerNumber", new SqlParameter("@id", id)); return accountNumber.ToString(); }
我换成
public string GetCustomerNumber(Guid id) { object accountNumber = (object)DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidCRM, CommandType.StoredProcedure, "spx_GetCustomerNumber", new SqlParameter("@id", id)); if (accountNumber is System.DBNull) { return string.Empty; } else { return accountNumber.ToString(); } }
有没有更好的办法解决这个问题?
可以使用较短的形式:
return (accountNumber == DBNull.Value) ? string.Empty : accountNumber.ToString()
编辑:尚未注意ExecuteScalar。如果返回结果中不存在该字段,则确实返回null。因此改用:
return (accountNumber == null) ? string.Empty : accountNumber.ToString()