.net 如何将DBNull作为值包含在强类型数据集中?
我在.NET应用程序中创建了一个强类型数据集(MyDataSet)。为了简单起见,我们将说它有一个DataTable(MyDataTable),一个列(mycl)。 mycl的DataType属性设置为“System.Int32”,AllowDBNull属性设置为“true” 我想手动创建一个新行,并将其添加到此数据集。我创建行时没有任何问题,如下所示:.net 如何将DBNull作为值包含在强类型数据集中?,.net,strongly-typed-dataset,dbnull,.net,Strongly Typed Dataset,Dbnull,我在.NET应用程序中创建了一个强类型数据集(MyDataSet)。为了简单起见,我们将说它有一个DataTable(MyDataTable),一个列(mycl)。 mycl的DataType属性设置为“System.Int32”,AllowDBNull属性设置为“true” 我想手动创建一个新行,并将其添加到此数据集。我创建行时没有任何问题,如下所示: MyDataSet.MyDataTableRow myRow = MySimpleDataSet.MyDataTable.NewItemRow
MyDataSet.MyDataTableRow myRow = MySimpleDataSet.MyDataTable.NewItemRow();
好的。但是,当我尝试将值设置为DBNull时:
myRow.MyCol = DBNull.Value;
我被告知我不能这样做…它不能将其转换为int。从某种意义上说,这是有意义的,因为我已经将其定义为int…但是我如何才能在其中获得DBNull?我不应该在那里有DBNull吗?AllowDBNull属性不就是为了这个吗
我显然错过了一些基本的东西。有人能解释一下是什么吗
编辑:我也尝试输入“int?”作为数据类型,但当我输入时Visual Studio抛出一个错误,说“列需要有效的数据类型。”int不接受null,但接受int?(不可使用的版本)没有。我认为您需要该数据类型。MyDataTableRow类中有一个生成的方法,名为:SetMyColNull() 您还可以执行以下操作:
myRow["MyCol"] = DBNull.Value;
因为myRow[“mycl”]
属于object类型
编辑(通过问题OP添加):
还有一个用于读取该值的对应方法IsMyColNull()。有两件事
允许DBNull与将值设置为DBNull是一个单独的设置
我只使用了DataSet XSD接口来设置此。。。但我不仅要设置“AllowDBNull=true”,还要设置“NullValue=(null)”。最初,“NullValue”设置为“(异常)”。这意味着数据集将接受bieng.Fill()并使用null替换,但不允许手动将该值设置为null
不确定这是否是你的问题,但听起来很相似 只需进入dataset中的designer模式,右键单击要启用null的字段,然后选择properties,在properties窗口中,将AllowDBNull设置为True,将NullValue设置为(null);
这对我来说很有用!
致以最良好的祝愿 这可能会有帮助:不幸的是,这不起作用…我试过这个(我应该在问题中提到这个…我会编辑它来这样做。)当我这样做时,它会弹出一个窗口,抱怨“列需要有效的数据类型。”Egad!我怎么会错过/不知道呢?杰出的非常感谢!
myRow["MyCol"] = DBNull.Value;