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,则用空格替换它。
答案 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("");
}