------- Windows Phone 7手机开发.Net培训、期待与您交流! -------   
 
     在数据库中null“”0等不一样,数据库中null表示不知道”!
sql语句:
Sql语句
select 1+'1'f
select 1+1
select 1+ null
执行结果
黑马程序员---wpf学习笔记七----数据库中null解说_数据库(f=2)
黑马程序员---wpf学习笔记七----数据库中null解说_数据库_02(2)
黑马程序员---wpf学习笔记七----数据库中null解说_null_03(null)
Sql语句
select 'a'+'b' result
select 'a'+'b'
select 'a'+null
执行结果
黑马程序员---wpf学习笔记七----数据库中null解说_null_04(result+ab)
黑马程序员---wpf学习笔记七----数据库中null解说_学习_05(ab)
黑马程序员---wpf学习笔记七----数据库中null解说_wpf_06(null)

查询表中未空的字段,应该使用
:字段 is null
select * from UserInfo
select * from UserInfo where Email =null
select * from UserInfo where Email is null
黑马程序员---wpf学习笔记七----数据库中null解说_null_07
黑马程序员---wpf学习笔记七----数据库中null解说_null_08
黑马程序员---wpf学习笔记七----数据库中null解说_数据库_09
    通俗解释,为什么【字段=null】查出来的数据为空:使用等号表示,找出字段为null等于null的,相当于找出不知道等于不知道的,这样就查不出数据。而是用语法is null,表示字段为null的记录,就可以找出!
那如何通过程序向数据库插入null字段数据?
--
SqlpParameter中值如果为null,表示没有提供参数的值,会报错
可以使用DBNull.Value来赋值,其用来表示数据库中的null
DBNull.Value
的使用:
直接赋值,会报错,如下
黑马程序员---wpf学习笔记七----数据库中null解说_null_10
如果向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数据
 
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11 public List<UserInfoEntity> testNull(int id)
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11 {
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11     string sqlCmd = " insert into UserInfo (Password) values(@RoleID) ";
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11     object objNull = DBNull.Value;
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11     
          if (id != 0)
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11        {
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11              objNull = id; 
           }
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11    return SQLHelper.ExcuteList<UserInfoEntity>(sqlCmd, new SqlParameter("@RoleID", objNull));
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11 
   }
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11public List<UserInfoEntity> testNull(int id)
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11                {
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11                        string sqlCmd = "select * from UserInfo where 1=1";
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11                        object objNull = DBNull.Value;
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11                        if (id != 0)
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11                        {
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11                                sqlCmd += " RoleID=@RoleID";
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11                                objNull = id;
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11                        }
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11                        else
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11                        {
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11                                sqlCmd += " RoleID is @RoleID";
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11                        }
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11                        return SQLHelper.ExcuteList<UserInfoEntity>(sqlCmd, new SqlParameter("@RoleID", objNull));
黑马程序员---wpf学习笔记七----数据库中null解说_学习_11                }
 
最后,在数据库中的数据位null,在读取到数据后,需要转化后null(因为其值为DBNull)使用!
 
------- Windows Phone 7手机开发.Net培训、期待与您交流! -------