2009-09-22 11 views
8

.NETアプリケーションで強く型付けされたデータセット(MyDataSet)を作成しました。簡単にするため、1つの列(MyCol)を持つ1つのDataTable(MyDataTable)があるとします。 MyColのDataTypeプロパティが "System.Int32"に設定され、AllowDBNullプロパティが "true"に設定されています。強く型付けされたデータセットにDBNullを値として含めるにはどうすればよいですか?

私は手動で新しい行を作成し、このデータセットに追加したいと思います。

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

ファイン:私のようなもので、問題なく行を作成します。しかし、私はがDBNullに値を設定しようとすると:

myRow.MyCol = DBNull.Value; 

私はそれを行うことができない...それはintにそれをキャストすることはできませんと言われています。これはint型に定義されているので意味がありますが、そこではDBNullをどのように取得できますか?私はそこにDBNullを持つことができないはずですか?それはAllowDBNullプロパティの目的ではありませんか?

私は明らかに何か基金を逃しています。誰かがそれが何であるか説明するのを助けることができます

EDIT:「int?」と入力してみました。私はそれを入力すると、 "列は有効なデータ型が必要です"と言ってエラーをスローします。

+0

これは役立ちます:http://stackoverflow.com/questions/879095/nullable-int-column-in-dataset –

答えて

13

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

myRow["MyCol"] = DBNull.Value; 

myRow["MyCol"]のタイプが(質問OPによって追加)object

EDITあるので:生成された対応方法もあり

あなたも行うことができます

myRow.SetMyColNull(); 

この値を読み出すために、IsMyColNull()を呼び出します。

+1

Egad!どのように私はこのことを忘れましたか、知らなかったでしょうか?優れた!どうもありがとう! – Beska

0

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

+1

残念ながら、これは動作しません...私はこれを試してみました(私は質問でこれを言及すべきです...私はそうするために編集するでしょう)。私はこれを行うと、 "Columnは有効なDataTypeが必要です"という文句を言うウィンドウをポップアップさせます。 – Beska

1

2つのことがあります。

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

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

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

+0

これは文字列でのみ機能します... –

1

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

+0

これは文字列でのみ機能します... –

関連する問題