• DBNull.Value 字段的用法


    DBNull 是一个单独的类,这意味着该类只能存在此实例。它指数据库中数据为空(<NULL>)时,在.net中的值

    如果数据库字段的数据缺失,则您可以使用 DBNull.Value 属性将 DBNull 对象值显式分配给该字段。然而,大部分数据提供程序会自动进行分配。

    若要计算数据库字段以确定其值是否为 DBNull,则可以将字段值传递给 DBNull.Value.Equals 方法。但此方法不常用,因为有许多其他方式可计算数据库字段是否缺少数据。

    例如:

    if (! DBNull.Value.Equals(row[fieldName])) 
          return (string) row[fieldName] + " ";
       else
          return String.Empty;

    DBNull.value==数据库中的null值...

    DBNull.value是对datatable来说的,他就相当于DB中的null,datatable中的null值只有用DBNull.value才能比较,

    例如:drow[0]==DBNull.value;

    延伸阅读:

    一、对表进行插入操作,如datetime和int类型的两个字段,都允许为null,
    用“sqlcmd.Parameters.Add("@t12",tb12.Text)”参数绑定时。datetime类型时,tb12.Text为空,插入成功,不报错,查看该值,却为1900-01-01;int类型时,用同样语句,tb12.Text为空,插入成功,不报错,查看该值,却为0;用“sqlcmd.Parameters.Add(new SqlParameter("@t12",SqlDbType.DateTime));sqlcmd.Parameters["@t12"].Value=tb12.Text;”语句时,tb12.Text为空插入则报错。

    sqlcmd.Parameters.Add(new SqlParameter("@t12",SqlDbType.DateTime));
    if (tb12.Text.Length>0)
    {
    sqlcmd.Parameters["@t12"].Value=tb12.Text
    }
    else
    {
    sqlcmd.Parameters["@t12"].Value = System.DBNull.Value;
    }

    二、
    以下是我测试的一个例子。
    例:表tbl_Student
    id    name    address
    1      jim      <NULL>
    将上述表数据填充到.net 的名为dt的DataTable中。
    dt.Rows[0]["address"]不等于null但是等于DBNull.Value.
    可见null表示一个对象的指向无效,即该对象为空对象。
    DBNull.Value表示一个对象在数据库中的值为空,或者说未初始化,DBNull.Value对象是指向有效的对象。

    另外注:对上述dt,如果有如下代码:dt.Rows[0][100]。结果如何?
    并非想象中的null。而是出现异常:索引超出数组界限。
    对于普通的引用类型变量,如果指向对象为null,则会提示:未将对象引用设置到对象实例。但对于使用dt.Rows[i][j]取值,如果第i行存在但i行没有j列,则直接出现异常,不会返回一个指向null的dt.Rows[i][j]。
    所以:使用(dt.Rows[0][100]!=null)判断没有意义。为避免0行的100列不存在。可以判断(dt.Rows[0].ItemArray.Length>100).

  • 相关阅读:
    怎么点击div之外的区域就隐藏这个div啊 找了很久,都没有很好解决
    ibatis 到 MyBatis区别
    MyBatis学习(一)一个简单的例子
    iBatis简单入门教程
    strut2的标签
    spring事务传播机制实例讲解
    ORACLE中Drop table cascade constraints之后果.
    oracle表的操作sql语句
    webService
    Oracle临时表
  • 原文地址:https://www.cnblogs.com/wllzbky/p/3385662.html
Copyright © 2020-2023  润新知