CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

数据库“空”值的问题

楼主newline2000(修改你在CSDN社区的信息)2006-05-01 00:52:38 在 .NET技术 / ASP.NET 提问

我编写ASP.NET程序的时候遇到一些问题,请教高手:  
  当数据库一个表有多个字段,每个字段都允许为“空”时,用SQL查询返回的某一个“空”字段的值是  
  SYSTEM.DBNULL.VALUE   而不是我们通常在ADO其他版本中的“”,(文本字段的空值),这就使得我某些特殊的情况下,要对字段的空值判定的时候出错。  
  请教高手,数据表的字段判空,你们有好的方法吗? 问题点数:20、回复次数:20Top

1 楼aspdotnet2005(天中之子、为中原喝采![我想找兼职MSN:Red-Maple@hotmail.com])回复于 2006-05-01 01:14:38 得分 5

设有一字段为aaa  
  SELECT   CASE   WHEN   aaa   IS   NULL   THEN   ''   ELSE   aaa   END   AS   aaa   FROM   tableNameTop

2 楼levin9(生活就是強姦,習慣啦就是享受)回复于 2006-05-01 01:18:27 得分 0

SELECT   CASE   WHEN   aaa   IS   NULL   THEN   ''   ELSE   aaa   END   AS   aaa   FROM   tableName  
  或者写个api函数,默认给个“”给他Top

3 楼aspdotnet2005(天中之子、为中原喝采![我想找兼职MSN:Red-Maple@hotmail.com])回复于 2006-05-01 01:21:57 得分 0

不用写什么函数,想简单直接将该字段设为默认值Top

4 楼Lcindep110(Descovering YourSelf)回复于 2006-05-01 01:28:15 得分 5

SELECT   ISNULL(field,'isnull')   FROM   TBNAMETop

5 楼newline2000(修改你在CSDN社区的信息)回复于 2006-05-01 02:27:13 得分 0

感谢你们的回复,谢谢  
  在SQL里面的问题解决了但是在.NET的问题仍然存在,设5X5的表(特殊要求一开始就控制了其列和行的长度),为了控制他有5行,INSTER   5   个ID值(1-5),那么剩下的4个字段就为空了,但是这4个字段的值就是SYSTEM.DBNULL.VALUE了,如果我   SELECT   *   FROM   这个表,然后read   =   SQLcmd.ExecuteReader   ,用READ.GETVALUE(5)得到的就是SYSTEM.DBNULL.VALUE,而且你用  
  if   (read.getvalue(5)   is   system.dbnull.value)   or   (read.getvalue(5).tostring="")   then  
  来判断系统提示整个if语句都是错误的。Top

6 楼xxuu503(中国没有prison break只是因为the company不让拍)回复于 2006-05-01 05:59:47 得分 5

Lcindep110(Going   Home)   (   )   信誉:100     2006-05-01   01:28:00     得分:   0      
   
   
  说的对  
   
   
  SELECT   ISNULL(field1,''),ISNULL(field2,0)   FROM   TBNAME  
   
  如果字符型的可以替换为空  
   
  数字型的替换为0  
   
  这样.net里处理的时候,就没有空值了  
  Top

7 楼cansum396(漆黑的夜)回复于 2006-05-01 07:17:01 得分 0

if(h_dt.Rows[0]["IS_APPCUSTOMER"]==DBNull.Value   )  
  {  
        t_Po.IS_APPCUSTOMER=0;  
  }  
  else  
  {  
          t_Po.IS_APPCUSTOMER=(int)   h_dt.Rows[0]["IS_APPCUSTOMER"];  
  }Top

8 楼xiahouwen(武眉博<活靶子.NET>)回复于 2006-05-01 09:05:14 得分 0

这就使得我某些特殊的情况下,要对字段的空值判定的时候出错。  
   
  什么情况????????Top

9 楼Ivony(授人以鱼不如授人以渔,上海谋生)回复于 2006-05-03 01:38:24 得分 0

说实话,如果你的空值并不代表什么特别的意义,就是作为空字符串处理的话,我真不知道你要在数据库里面允许空干嘛……Top

10 楼jeremychen001181(Τιτάνες)回复于 2006-05-03 01:50:18 得分 0

在。NET中用sqlreader控件读取数据,并进行NULL值判断,并没有接触过,   但是LZ若用DATASET控件来获取数据是可以在程序中进行判断NULL值得,   具体操作如   :   cansum396(沉觉不醒)Top

11 楼ericfine(埃里克)回复于 2006-05-03 01:56:20 得分 0

数据表设计不推荐使用可为空的列,   用默认值吧Top

12 楼jeremychen001181(Τιτάνες)回复于 2006-05-03 04:33:38 得分 0

代码已测试通过:  
   
  string   CONN_STRING   =   @"server=bluebamboo;database=pumpkinwebengine;user   id=Customer";  
  string   strQuery   =   @"select   *   from   Advertisement";  
  SqlConnection   conn   =   new   SqlConnection(CONN_STRING);  
  try  
  {  
  conn.Open();  
  SqlCommand   cmd   =   new   SqlCommand();  
   
  cmd.Connection   =   conn;  
  cmd.CommandText   =   strQuery;  
  cmd.CommandType   =   CommandType.Text;  
   
  SqlDataReader   rdr   =   cmd.ExecuteReader(CommandBehavior.CloseConnection);  
  while(rdr.Read())  
  {  
  for(int   i   =   0;   i   <   rdr.FieldCount;   i++)  
  {  
  if   (rdr.IsDBNull(i))    
  {  
  /*为值空时*/  
  }  
  else  
  {  
  /*值不为空时*/  
  }  
  }  
  }  
   
   
  }  
  catch{throw;} Top

13 楼newline2000(修改你在CSDN社区的信息)回复于 2006-05-05 03:41:29 得分 0

感谢   jeremychen001181(青竹竿)   (   )   信誉:100    
   
   
   
   
   
   
   
   
   
   
  Top

14 楼newline2000(修改你在CSDN社区的信息)回复于 2006-05-05 03:53:15 得分 0

再请教:   jeremychen001181(青竹竿)   (   )   信誉:100    
  当“”文本空,与SYSTEM.DBNULL   空,同时存在的时候怎么办?如何判断?写到这我的灵感来了。。。  
  if   (rdr.IsDBNull(i))    
  {  
  /*为值空时*/  
  }  
  else  
  {  
  /*值不为空时*/  
                                                                                                                if   (rdr(i).tostring!="")  
                                                                                                                  {/*值不为文本空时*/}  
                                                                                                                  else  
                                                                                                                {}  
  }  
  也不知道对不对,西西....Top

15 楼JavaDianNet(如何做...如何做的更好...)回复于 2006-05-05 04:10:26 得分 0

结论:数据库设计的差,害死程序员Top

16 楼jiajiaxiaxia(轻烟)回复于 2006-05-05 06:56:43 得分 0

路过,有意思Top

17 楼jeremychen001181(Τιτάνες)回复于 2006-05-06 01:33:53 得分 0

if   (rdr(i).tostring!="")  
   
  //-----------------------------------  
   
  if   (rdr(i).tostring().trim()!="")Top

18 楼forkzeng(小光)回复于 2006-05-06 01:39:41 得分 0

我编写ASP.NET程序的时候遇到一些问题,请教高手:  
  当数据库一个表有多个字段,每个字段都允许为“空”时,用SQL查询返回的某一个“空”字段的值是  
  SYSTEM.DBNULL.VALUE   而不是我们通常在ADO其他版本中的“”,(文本字段的空值),这就使得我某些特殊的情况下,要对字段的空值判定的时候出错。  
  请教高手,数据表的字段判空,你们有好的方法吗?  
   
  ==========  
  这个不可能吧,你从数据库取出来,不是在ADO了吧?  
  Top

19 楼ericfine(埃里克)回复于 2006-05-11 17:41:12 得分 0

JavaDianNet(研究petshop3.0...http://blog.csdn.net/JavaDianNet)   (   )   信誉:100     2006-5-5   4:10:26     得分:   0        
         
  结论:数据库设计的差,害死程序员  
   
  数据库不照样还是程序员设计嘛  
       
     
  Top

20 楼cansum396(漆黑的夜)回复于 2006-05-11 17:43:31 得分 5

SELECT   ISNULL(FIELDNAME,'')   FROM   TABLETop

相关问题

关键词

得分解答快速导航

  • 帖主:newline2000
  • aspdotnet2005
  • Lcindep110
  • xxuu503
  • cansum396

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo