IsNullOrEmpty不能在C#中工作,但“null”有效

时间:2013-08-15 18:23:48

标签: c# .net oracle

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();
}

输出:null

所以问题是“null”字符串测试工作,但IsNullorEmpty不起作用 我需要测试GetOracleValue是否为null,如果它为null,则用空格替换它。

1 个答案:

答案 0 :(得分:3)

在第一个示例中,您正在检查值为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("");
}