在我的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
。
如何解决这个问题?
请帮帮我,非常感谢你。
答案 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)
您可以通过以下代码
比较空字符串或nullstring str = Your string
if(String.IsNullOrEmpty(str))
{
if yes, it comes here
}
else
{
if not, it comes here
}
String.IsNullOrEmpty()
是bool
类型。