9

我在我的 .NET 应用程序中创建了一个强类型数据集 (MyDataSet)。为了简单起见,我们会说它有一个数据表(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 在我输入时会引发错误,说“列需要有效的 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

有两件事。

允许 DBNull 是与能够将值设置为 DBNull 的单独设置。

我只使用了 DataSet XSD 接口来设置这个......但我不仅要设置“AllowDBNull = true”,而且还必须设置“NullValue = (null)”。最初“NullValue”设置为“(异常)”。这意味着数据集将接受 bieng .Fill()ed with null,但不允许您手动将值设置为 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 回答