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 是否为空,如果它是空的,然后用空格替换它。
在第一个示例中,您将检查值为 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("");
}