強く型指定されたデータセットに値として DBNull を含めるにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1461622

質問

.NET アプリに厳密に型指定されたデータセット (MyDataSet) を作成しました。わかりやすくするために、1 つの DataTable (MyDataTable) と 1 つの列 (MyCol) があるとします。MyCol の DataType プロパティは「System.Int32」に設定され、AllowDBNull プロパティは「true」に設定されています。

新しい行を手動で作成し、このデータセットに追加したいと思います。次のような行を問題なく作成します。

MyDataSet.MyDataTableRow myRow = MySimpleDataSet.MyDataTable.NewItemRow();

大丈夫。ただし、値を DBNull に設定しようとすると、次のようになります。

myRow.MyCol = DBNull.Value;

それはできないと言われました...それを int にキャストすることはできません。これは、int として定義したので、ある意味では理にかなっていますが、では、そこに DBNull を取得するにはどうすればよいでしょうか?そこに DBNull を含めることはできないのでしょうか?それがAllowDBNullプロパティの目的ではないでしょうか?

明らかに基本的なものが欠けています。誰かがそれが何であるかを説明するのを手伝ってくれますか?

編集: また、「int?」を入力しようとしました。データ型として、しかしVisual Studioは入力するときにエラーをスローし、「列には有効なデータ型が必要だ」と言っています。

役に立ちましたか?

解決

MyDataTableRow クラスには、次の名前の生成されたメソッドがあります。SetMyColNull()。

myRow.SetMyColNull();

次のこともできます:

myRow["MyCol"] = DBNull.Value;

なぜなら myRow["MyCol"] タイプです object

編集(質問OPによって追加):

この値を読み戻すために生成される対応するメソッド、IsMyColNull() もあります。

他のヒント

2つあります。

DBNull を許可することは、値を DBNull に設定できることとは別の設定です。

これを設定するために DataSet XSD インターフェイスのみを使用しました...ただし、「AllowDBNull = true」を設定するだけでなく、「NullValue = (null)」も設定する必要がありました。元々、「NullValue」は「(例外)」に設定されていました。これは、データセットが null を含む bieng .Fill()ed を受け入れることはできますが、手動で値を null に設定することはできないことを意味します。

これがあなたの問題かどうかはわかりませんが、同じように聞こえます。

データセットのデザイナー モードに移動し、null を有効にするフィールドを右クリックして、プロパティを選択し、プロパティ ウィンドウで、AllowDBNull を True に、NullValue を (NULL) に設定します。それは私にとっては正しいです!よろしくお願いします !

int は null を受け入れませんが、int?(INullable バージョン) は可能です。代わりにそのデータ型が必要だと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top