2012-04-20 9 views
0

は、ここに私のコードです:AnticipatedLaunchDateは現在のコンテキスト内に存在しないと言っているクラスプロパティの割り当てが現在のコンテキストに存在しませんか?

public class DistInfo 
{ 
    public string AnticipatedLaunchDate { get; set; } 
} 

DistInfo distInfo = new DistInfo 
{ 
    if (reader.GetString(reader.GetOrdinal("GoLiveDate")) == null) { 
     AnticipatedLaunchDate = ""; 
    } 
    else 
    { 
     AnticipatedLaunchDate = reader.GetString(reader.GetOrdinal("GoLiveDate")); 
    } 
}; 

はここに私のクラスです。 nullの場合は空の文字列を割り当てる別の方法はありますか?

は私が構築されており、コードを実行し、それがこのラインであるライン254上でエラーが発生した:次のエラーで

DistInfo distInfo = new DistInfo 
{ 
    AnticipatedLaunchDate = reader.GetString(reader.GetOrdinal("GoLiveDate")) ?? "" 
}; 

:データが存在しない時に読むため

無効な試み。

DistID password GoLiveDate FirstBonusRun TechFName TechLName TechEmail TechPhone WebISPFName WebISPLName WebISPEmail WebISPPhone FullFillFName FullFillLName FullFillEmail FullFillPhone FName LName HomePhone Email 
113 !12341 NULL NULL John Doe [email protected] 8015555555           NULL NULL NULL NULL NULL NULL NULL NULL Jane Doe 8015555555 [email protected] 

答えて

1

あなたのフィールドGoLiveDateがGetStringメソッドによって返さDBNull.ValueをされていないNULL値とヌルが含まれ、
あなたが使用することはできません??:ここでは

は、SQLクエリが返すデータがありますこの場合、演算子。 (See this question here) このコードで試してください。

EDIT:

DistInfo distInfo = new DistInfo() {AnticipatedLaunchDate = "Some default value instead of null"}; 
int colOrdinal = reader.GetOrdinal("GoLiveDate"); 
if(!reader.IsDBNull(colOrdinal)) 
{ 
    distInfo.AnticipatedLaunchDate = reader.GetString(colOrdinal); 
} 
return distInfo; 
+0

私はあなたのレコードの内容を追加していることがわかります。 GoLiveDateはnullで、GetString()はDBNull.Value not nullを返します。 – Steve

+0

これは動作しません。 Altho私はもっと遠くに行くことができます。それをステップ実行すると!reader.IsDBNull行になりますが、ブロックを完全にスキップします。彼らは元の人がVarChar(50)としてコラムを設定して、違いがあるかどうかはわかりません。 NULLをDbNULLとして認識したくないようです。 –

+0

そうです。データベースのフィールドにNULLが含まれている場合、IsDBNullはtrueを返し、GetStringを使用しているブロックには入力しないでください。 GetString()は使用できません。 AnticipatedLaunchDateのデフォルト値を設定する必要があります。私は私の答えを更新しようとします – Steve

関連する問題