我使用VS2008数据集设计器设计了一个数据集.在其中一个数据表中,我将大多数列的"AllowDBNull"属性设置为False.但是,如果我为这些列创建包含空值的DataRow,则此数据表会接受此行,而不会出现任何错误.
我在这里不明白吗?请指教.谢谢.
然而,编辑 Mike Spross的优秀解释会带来另一个问题.如果它们是System.DBNull,我们如何检查文本字段?令人惊讶的是,DataSets没有将字符串""视为System.DBNull并抛出异常.或者不是吗?
编辑我想我已经找到了问题和原因.我正在初始化DataTable的新行,然后将值填入该行.初始化行时,字符串的默认值,即""可能正在该列中填充.我想是的呢?有关于此的任何想法?
简短的回答是:
System.DBNull.Value != null
更长的答案是:
在C#中,NULL
SQL 中的值的概念由类的Value
属性表示System.DBNull
.在处理数据库时,更熟悉的C#null
实际上并不意味着"空值".
将数据库列设置null
为时,ADO.NET会将列初始化为该列的默认值(例如,int
列将初始化为0).也就是说,使用null
can实际上会导致非空值最终进入数据库,因此您不会收到错误.
如果您改为将数据库列设置为System.DBNull.Value
,则该列实际上将设置为NULL
.这种情况AllowDBNulls == false
会阻止你这样做.