强类型DataSet 与 ISNULL函数

数据库中的有一种十分特殊的数据类型,就是null,这给前台开发带来的或多或少的麻烦。例如int i =null,这就会让程序编译时报错。

为了防止这样的错误,应该善用ISNULL函数。就在我刚才写得一个DEMO中,我就遇到了一个问题。

前台的代码为: if (row.State == 1&&!row.IsStateNull());就是执行这句时,抛出了异常,说我得row.State为null.

强类型DataSet中query为SELECT ErrorTimes, Id, LastLogTime, Password, ISNULL(State,0), UserName FROM T_Users WHERE (Id = @id),

百思不得其解,为了能让程序继续运行下去,尽快完成DEMO,我将数据库中相应字段改为了0,并且,放弃使用ISNULL函数。待整个DEMO完成后,我回头去想,为什么STATE会抛异常,更奇怪的是,从监视器中,我看到,当row被取到后,state属性显示的是:会引发一个DBNULL异常.而不是我先前所想的:STATE值为NULL。

所以,我再来看上面那句query,我突然发现,在结果集中,所有的字段都有列名,唯独State没有,因为使用了ISNULL函数。

于是,我把query修改成为SELECT ErrorTimes, Id, LastLogTime, Password, ISNULL(State,0) as State, UserName FROM T_Users WHERE (Id = @id),异常消失了。

从这儿,我可猜想得出,强类型dataSet ,就是执行完SQL语句,根据获取的结果集中得列名,对row中对应属性进行赋值。因此,才会有了,结果集中没有列名,导致,row中State属性无法被赋值,从而引发异常.

posted @ 2011-08-18 15:22  jayroe  阅读(369)  评论(0编辑  收藏  举报