-1
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.IsNullOrEmptylike,

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

输出:空

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

4

1 回答 1

3

在您的第一个示例中,您正在检查一个值为 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("");
}
于 2013-08-15T18:43:48.163 回答