黑马程序员---wpf学习笔记七----数据库中null解说

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------   
 
     在数据库中 null “” 0 等不一样,数据库中 null 表示 不知道 ”!
sql 语句:
Sql语句
select 1+'1'f
select 1+1
select 1+ null
执行结果
(f=2)
(2)
(null)
Sql语句
select 'a'+'b' result
select 'a'+'b'
select 'a'+null
执行结果
(result+ab)
(ab)
(null)

查询表中未空的字段,应该使用
: 字段 is null
select * from UserInfo
select * from UserInfo where Email =null
select * from UserInfo where Email is null
    通俗解释,为什么【字段 =null 】查出来的数据为空 : 使用等号表示,找出字段为 null 等于 null 的,相当于找出不知道等于不知道的,这样就查不出数据。而是用语法 is null, 表示字段为 null 的记录,就可以找出!
那如何通过程序向数据库插入null字段数据?
--
SqlpParameter中值如果为null,表示没有提供参数的值,会报错
可以使用DBNull.Value来赋值,其用来表示数据库中的null
DBNull.Value
的使用:
直接赋值,会报错,如下
如果向 new SqlParameter ( "@RoleID" , null) 会报如下错 :
The parameterized query '(@RoleID nvarchar(4000))select * from UserInfo where RoleID=@Rol' expects the parameter '@RoleID', which was not supplied.
通过 object 变量和 DBNull.Value 来转变一下 , 如下代码 , 执行就可以查找到为 null 数据
 
  public List<UserInfoEntity> testNull( int id)
 {
      string sqlCmd = " insert into UserInfo (Password) values(@RoleID) ";
     object objNull = DBNull.Value;
     
           if (id != 0)
        {
              objNull = id; 
           }

     return SQLHelper.ExcuteList<UserInfoEntity>(sqlCmd, new SqlParameter( "@RoleID", objNull));
 
   }
public List<UserInfoEntity> testNull( int id)
                {
                         string sqlCmd = "select * from UserInfo where 1=1";
                         object objNull = DBNull.Value;
                         if (id != 0)
                        {
                                sqlCmd += " RoleID=@RoleID";
                                objNull = id;
                        }
                         else
                        {
                                sqlCmd += " RoleID is @RoleID";
                        }
                         return SQLHelper.ExcuteList<UserInfoEntity>(sqlCmd, new SqlParameter( "@RoleID", objNull));
                }
 
最后,在数据库中的数据位null , 在读取到数据后, 需要转化后null( 因为其值为DBNull) 使用!
 
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------

你可能感兴趣的:(数据库,学习,null,WPF)