永发信息网

C# 中对DataTable 的字段赋值 有时能采用null赋值,而有时候必须采用DBNull.Value 赋值 请问为什么?

答案:2  悬赏:60  手机版
解决时间 2021-03-19 22:05
  • 提问者网友:送舟行
  • 2021-03-19 08:16
如下例:
if (cbHoleType.Checked!=true)
{
for (int i = 0; i < dt.Rows.Count;i++ )
{
dt.Rows[i]["spec_type"]=null;
}
}
if (cbOD_CO.Checked != true)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i]["od_co"] = DBNull.Value;
}
}
if (cbDesc.Checked != true)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i]["report_desc"] = null;
}
}
if (cbOD.Checked != true)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i]["od"] = DBNull.Value;
}
}
这个能测试通过,但是我在把DBNull.Value 换成Null是出错 四个字段都是数据库中一张表的字段,dt是取出来的DataTable

但是我的 cbDesc 同样也是dt的字段,却可以用null 赋值(每个字段都是有值的)
最佳答案
  • 五星知识达人网友:孤独的牧羊人
  • 2021-03-19 08:32
DBNull.value是处理SQL查询返回空项的,因为ADO.NET中全部以类的型式存储数据(dr,ds.../所以toString()不会报空项异常).
而NULL是未实例化即未开辟内存空间的
所以两个的区别是,一个开辟了空间,但"值"为空,后者连空间都没有.
全部回答
  • 1楼网友:躲不过心动
  • 2021-03-19 09:11
没看懂什么意思?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯