
C# 中对DataTable 的字段赋值 有时能采用null赋值,而有时候必须采用DBNull.Value 赋值 请问为什么?
如下例:if(cbHoleType.Checked!=true){for(inti=0;i<dt.Rows.Count;i++){dt.Rows[i]["spec_typ...
如下例:
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 赋值(每个字段都是有值的) 展开
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 赋值(每个字段都是有值的) 展开
展开全部
DBNull.value是处理SQL查询返回空项的,因为ADO.NET中全部以类的型式存储数据(dr,ds.../所以toString()不会报空项异常).
而NULL是未实例化即未开辟内存空间的
所以两个的区别是,一个开辟了空间,但"值"为空,后者连空间都没有.
而NULL是未实例化即未开辟内存空间的
所以两个的区别是,一个开辟了空间,但"值"为空,后者连空间都没有.

2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询