-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.IsNullOrEmpty

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

出力: null

問題は「null」文字列テストが機能することですが、IsNullorEmpty は機能しません。GetOracleValue が null であるかどうかをテストし、それを空のスペースに置き換える必要があります。

4

1 に答える 1

3

最初の例では、値が null の文字列をチェックしています。2 番目の例では、値が実際に null かどうかを確認しています。レコードが null の場合にデータベースが返すものは System.DBNull です

最初のスニペットが機能する理由は、「null」の値があるかどうかをチェックしているためです。これは決して行わないため、else ステートメントに移動します。

この Web サイトをご覧ください: 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 に答える