如何在我的强类型数据集中包含DBNull作为值?

时间:2009-09-22 18:01:25

标签: .net strongly-typed-dataset dbnull

我在我的.NET应用程序中创建了一个强类型数据集(MyDataSet)。为简单起见,我们假设它有一个DataTable(MyDataTable),一列(MyCol)。 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会抛出一个错误,说“Column需要一个有效的DataType。”

4 个答案:

答案 0 :(得分:13)

你在MyDataTableRow类中有一个名为SetMyColNull()的生成方法。

myRow.SetMyColNull();

你也可以这样做:

myRow["MyCol"] = DBNull.Value;

因为myRow["MyCol"]的类型为object

编辑(由问题OP添加):

还有一个用于读取此值的对应方法,IsMyColNull()。

答案 1 :(得分:1)

有两件事。

允许DBNull是一个单独的设置,可以将值设置为DBNull。

我只使用DataSet XSD接口来设置它...但我不仅要设置“AllowDBNull = true”,而且还必须设置“NullValue =(null)”。最初“NullValue”被设置为“(例外)”。这意味着数据集将接受bieng .Fill()ed with null,但不允许您手动将值设置为null。

不确定这是不是你的问题,但听起来很相似。

答案 2 :(得分:1)

只需转到数据集中的设计器模式,右键单击要启用null的字段,然后在属性窗口中选择属性,将AllowDBNull设置为True,将NullValue设置为(NULL); 它对我有用! 最好的问候!

答案 3 :(得分:0)

int不接受null,但是int? (可以使用的版本)。我认为你需要那种数据类型。