9

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

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

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

罰金。ただし、値を DBNull に設定しようとすると:

myRow.MyCol = DBNull.Value;

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

明らかに根本的な何かが欠けています。誰かがそれが何であるかを説明するのを助けることができますか?

編集:「int?」も入力してみました。DataType と同じですが、入力すると Visual Studio がエラーをスローし、「列には有効な DataType が必要です」と表示されます。

4

4 に答える 4

14

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

myRow.SetMyColNull();

あなたもできる:

myRow["MyCol"] = DBNull.Value;

myRow["MyCol"]タイプなのでobject

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

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

于 2009-09-22T18:08:46.637 に答える
1

2つのことがあります。

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

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

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

于 2009-09-22T18:13:19.433 に答える
1

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

于 2010-05-31T11:29:46.067 に答える
0

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

于 2009-09-22T18:04:13.837 に答える