在c#中比较字符串null或为空

时间:2016-02-02 13:19:18

标签: c# mysql

在我的MySQL Db表中,我有字段Check

字段Check上记忆的值可能是:null-1

当字段Check上记忆的值为null-1时,我需要返回xxx值。我试过了:

string Check = sdr["Check"] == DBNull.Value || sdr["Check"] == "-1,00" ? "xxx" : sdr["Check"].ToString();

没有成功,因为输出总是-1,00

如何解决这个问题?

请帮帮我,非常感谢你。

3 个答案:

答案 0 :(得分:1)

问题是您正在比较错误的对象。从System.Data结果集返回的值是围绕实际值的包装器。你想要的是打字版本。基本上,支票应如下所示:

int checkIndex = sdr.GetOrdinal("Check");
string Check = sdr.IsDBNull(checkIndex) || (sdr.GetString(checkIndex) == "-1,00") ? "xxx" : sdr.GetString(checkIndex);

如果你"检查"实际上是一个数字,你可能想要使用IntValue("Check")调用,只是为了处理全球化问题,如果你的应用程序被部署在他们使用"。"。而不是","小数点。

有关完整的API,请参阅https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader(v=vs.110).aspx

如果您的MySQL数据库未设置为使用与C#应用程序相同的区域设置格式,则您对数字格式的假设可能不正确。为了制作更强大的支票版本,我建议这样:

 int checkIndex = sdr.GetOrdinal("Check");
 string Check = "xxx";
 double checkValue = sdr.IsDBNull(checkIndex) ? -1 : Convert.ToDouble(sdr[checkIndex]);

 if (checkValue != -1)
 {
     Check = checkValue.ToString(CultureInfo.CurrentCulture);
 }

答案 1 :(得分:1)

如果数据类型为十进制10,2 ,则需要Convert.ToDecimal值:

 string Check = (sdr["Check"] == DBNull.Value || Convert.ToDecimal(sdr["Check"]) == -1) ? "xxx" : sdr["Check"].ToString();

答案 2 :(得分:-1)

您可以通过以下代码

比较空字符串或null
string str = Your string
if(String.IsNullOrEmpty(str))
{
    if yes, it comes here
}
else
{
    if not, it comes here
}

String.IsNullOrEmpty()bool类型。