我在我的.net应用程序中创建了一个强类型数据集(MyDataSet)。为了简便起见,我们会说这有一个数据表(MyDataTable),有一列(MyCol)。 MyCol具有其数据类型属性设置为“System.Int32”,其AllowDBNull属性设置为“真”。

我想手动创建一个新行,并把它添加到这个数据集。我创建的行没有问题,喜欢的东西:

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

精细。然而,当我尝试的值设置为的DBNull:

myRow.MyCol = DBNull.Value;

有人告诉我,我不能这样做......它不能强制转换为int。这是有道理的,在某种程度上,因为我定义它是一个int ...但那我怎么才能在那里得到的DBNull?难道我不应该能有DBNull的在那里呢?这不就是AllowDBNull属性是什么?

我显然失去了一些东西fundemental。有人可以帮助解释这是什么?

修改: “INT”我也尝试进入作为数据类型,但是当我进入它,说Visual Studio中抛出一个错误“栏目需要一个有效的数据类型。”

有帮助吗?

解决方案

你在MyDataTableRow类命名为生成的方法:SetMyColNull()

myRow.SetMyColNull();

您也可以这样做:

myRow["MyCol"] = DBNull.Value;

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

编辑(通过提问OP添加的):

还有用于读取该值背出生成的对应方法,IsMyColNull()。

其他提示

有两件事情。

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

我只用了DataSet XSD界面来设置这个......但我不得不不仅将“AllowDBNull =真”,但我也不得不设置“NullValue属性=(空)”。本来“NullValue属性”设置为“(异常)”。这意味着,该数据集将接受空bieng .fill伪()的,但不会允许你手动设置为null值。

不知道这是你的问题,但它听起来相似。

只是去设计模式在数据集中,并右击场要启用为空,选择属性,在属性窗口,AllowDBNull设置为True,NullValue属性到(NULL); 它为我的作品吧! 最诚挚的问候!

INT不接受空,但诠释? (该INullable版)一样。我认为你需要的数据类型来代替。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top