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

表中当字段值为空时,ADO对其访问会出错,如何解决?

楼主heihong(鱼儿水中游)2004-08-02 16:52:29 在 VC/MFC / 数据库 提问

if(   FAILED(::CoInitialize(NULL))   )    
  {  
                    AfxMessageBox("ADO   Init   failed");  
  return;  
  }  
   
  rs.CreateInstance(__uuidof(Recordset));  
   
  CString   temp   =   "";  
  CString   sContext   =   "";  
  try   {  
   
  rs->Open("mytable",  
                    "Provider=sqloledb;Data   Source=MyServer;"  
  "Initial   Catalog=mydatabase;Integrated   Security=SSPI;",  
  adOpenStatic,   adLockOptimistic,   adCmdTable);  
   
  rs->MoveFirst();  
                    while   (!(rs->EndofFile))   {  
  long   fieldcount   =   rs->Fields->Count;  
  for(long   i=0;   i<fieldcount;   i++){  
  vtValue   =   rs->Fields->GetItem(i)->GetValue();//*****  
  stemp   =   (char*)   ((_bstr_t)   vtValue);  
  sContext=   sContext+stemp+"   ";  
  }  
                                      //   ...   other   process  
   
  rs->MoveNext();  
  }  
  }  
  catch(_com_error   &e)  
  {  
  CString   err;  
  err.Format("%s",   (char*)(e.Description())   );  
  AfxMessageBox(err);  
   
  }  
  catch(...)  
  {  
  AfxMessageBox("Unknown   Error...");  
   
  }  
   
   
  mytable的第一条记录中的第二个字段类型为float,值为空,执行带//****语句会throw   -com_error异常:error   messageDescription='(NULL)',本意为如果表中的值勤为空,则转换为0,然后接着读下一字段值.但程序运行到此处抛出异常后并不继续执行了,另外如果进行空值转换,如何进行,   谢谢   :) 问题点数:20、回复次数:4Top

1 楼whale()回复于 2004-08-02 17:05:11 得分 0

在转换前先判断一下vtValue.vt是否等于VT_NULL,如果是NULL,表示字段的值为空,做特殊的处理。Top

2 楼heihong(鱼儿水中游)回复于 2004-08-02 17:46:13 得分 0

但是程序rs->Fields->GetItem(i)->GetValue时抛出异常,程序不继续了,如何让程序继续读下一条记录Top

3 楼laiyiling(陌生人[MVP])回复于 2004-08-02 21:28:02 得分 10

判断一下  
  CString   str;  
  if(vFieldValue.vt   !=   VT_NULL)  
  {  
  str   =   (char*)_bstr_t(vFieldValue);    
  }  
  Top

4 楼whale()回复于 2004-08-03 09:34:37 得分 10

是不是有的字段是Image,Text之类的BLOB,CLOB类型的字段,这种字段是不能通过Filed的Value来访问的,需要使用Field的GetChunk/AppendChunk方法。Top

相关问题

  • 用dbgrid作为数据编辑窗口时,当某个字段的值为空时会出错
  • 为什么我为ado字段赋值时总是出错?
  • 为什么用ADO当字段大于80时会出错
  • 用ADO访问数据库时,字段是空值出错该如何解决?
  • 日期字段editmask出错。。。
  • ADO求字段名?
  • !出错了!用ADO打开Access数据库写图片到其中一个二进制格式的字段
  • 用ado的方法读取记录集碰到某字段为空就出错的问题!
  • 在VC中用ado封装类查询带BLOB字段的表时出错,怎么处理呢?
  • 使用ADO向数据库表插入第一个Blob字段时,总是出错,但如果已经有数据,就不会出错,这是怎么回事?

关键词

  • 字段
  • null
  • scontext
  • 程序
  • afxmessagebox
  • 异常
  • vt
  • rs
  • cstring
  • err

得分解答快速导航

  • 帖主:heihong
  • laiyiling
  • whale

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

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