空值处理


End_Time没有值
            string strSQL = string.Format("Select End_Time From T_BJ_Inventory Where Inventory_No='{0}' And End_Time is not null", Inven_No);
            string n = "";
            OracleCommand cmd = new OracleCommand();
            conn = new OracleConnection(ConnectionString);
            conn.Open();
            cmd.Connection = conn;
            cmd.CommandText = strSQL;
            object obj = cmd.ExecuteOracleScalar();
执行后 obj 为 null,是指没有该条记录
            string strSQL = string.Format("Select End_Time From T_BJ_Inventory Where Inventory_No='{0}' ", Inven_No);
执行后obj为Null,是指有该条记录但字段值为空。
1.""表示空值插入.第一:他只能插入字符串char,varchar型,第二,在带参数插入时会报错,
    形式:md.Parameters["@payment_type"].Value = "";
    报错:    No size set for variable length data type: Stringc
2.null可以作为空值插入,但是建议不用;
    如果你要调用存储过程,里面有参数 @val nvarchar(20)="AABB" , 
    那么cmd.Parameters["@val"].Value=null 代表使用这个默认的 "AABB"
    所以不用null表示空值
3.DBNull表示,DBNull是net中专门针对空值的;
    如果你要调用存储过程,里面有参数 @val nvarchar(20)="AABB" , 
    那么cmd.Parameters["@val"].Value=null 代表使用这个默认的 "AABB"
    而cmd.Parameters["@val"].Value=DBNull.Value 代表使用NULL来传给 @val
      cmd.Parameters["@payment_type"].Value = ""; 这3个不一样;
4.在C#中,int、bool、DateTime等值类型的数据不可以为null,string.类等引用类型可为null。
如果数据库里面存的是NULL,那么用row["TelPhone"]取出来的数据的值是DBNull.value,ADO.Net对于C#中int不可以为null,数据库中int可以为null的一个权衡
DataTable dt = SqlHelper.ExecuteDataTable("select * from T_Customers where id=1");
DataRow row = dt.Rows[0];
if (row.IsNull("Age")) //简单的判断数据库中字段值为null的方法
            {
                return -1;
            }
            else
            {
                int age = (int)row["Age"];
                return age;
            }
DBNull.Value不等于null 检验MessageBox.Show((DBNull.Value == null).ToString());

你可能感兴趣的:(数据库,String,C#,null,存储,payment)