IsNullOrEmpty在C#中不起作用,但“null”工作

本文关键字:null 工作 不起作用 IsNullOrEmpty | 更新日期: 2023-09-27 18:28:00

priavate void getfoo( ){
OracleDataReader myDataReader;
OracleRefCursor myCursor = (OracleRefCursor)cmd.Parameters["omyDATA"].Value;
myDataReader = myCursor.GetDataReader();
fillmytable(myDataReader);
}
private void fillmytable(OracleDataReader mydataReader) {    
StringBuilder myStringBuilder = new StringBuilder();                   
if( mydataReader.GetOracleValue(n) == "null")
{
    mystringbuilder.Append("");
}
else
{
    mystringbuilder.Append(mydataReader.GetOracleValue(n).ToString();
}

}输出: _

但如果我想使用String.IsNullOrEmpty

if(String.IsNullorEmpty(mydataReader.GetOracleValue(n).ToString())
{
    mystringbuilder.Append("");
} 
else
{
    mystringbuilder.Append(mydataReader.GetOracleValue(n).ToString();
}

输出:空

所以问题是"空"字符串测试有效,但 IsNullorEmpty 不起作用我需要测试 GetOracleValue 是否为空,如果它是空的,然后用空格替换它。

IsNullOrEmpty在C#中不起作用,但“null”工作

在第一个示例中,您将检查值为 null 的字符串。在第二个示例中,您将检查该值是否实际为 null。 当记录为空时,数据库返回的内容是 System.DBNull

第一个代码段工作的原因是因为它正在检查它的值是否为"null",它永远不会这样做,所以它会转到 else 语句。

看看这个网站: http://msdn.microsoft.com/en-us/library/system.dbnull.value.aspx

编辑:

我认为这应该有效。

if( mydataReader.GetOracleValue(n) != DBNull.Value)
{
    mystringbuilder.Append(mydataReader.GetOracleValue(n).ToString();
}
else
{
    mystringbuilder.Append("");
}