CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  数据库

高分求救!!!关于数据库查询的问题(在线等待!)

楼主white_black_cat(白猫)2003-03-01 11:51:35 在 VC/MFC / 数据库 提问

小弟在编写关于数据库的一个程序,遇到以下问题:  
  在执行下条语句时报错:Invalid   descriptor   index  
   
  m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,_T(   "Select   ID   from   基本信息"   ));  
   
  我查了好多资料,不知怎样解决,求救高手帮忙解决,小弟不胜感激!!!  
  具体代码如下:  
  BOOL   InDlg::OnInitDialog()    
  {  
  CDialog::OnInitDialog();  
   
  //   TODO:   Add   extra   initialization   here  
  CBaseSet   *m_recordset=new   CBaseSet(&m_database);  
  CString   str,strSQL;  
   
  m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,_T(   "Select   ID   from   基本信息"   ));  
  while(!m_recordset->IsEOF()){  
   
  m_recordset->GetFieldValue("ID",str);  
  m_combo_inid.AddString   (str);  
  m_recordset->MoveNext();  
  }  
   
   
  m_recordset->Close();  
  return   TRUE;      
  //   return   TRUE   unless   you   set   the   focus   to   a   control  
                              //   EXCEPTION:   OCX   Property   Pages   should   return   FALSE  
  }  
  问题点数:100、回复次数:10Top

1 楼coyer(test)回复于 2003-03-01 12:18:48 得分 0

错误的描述不完全,猜测如下:  
  1   你的数据库是什么,access?有一个权限的问题,有可能你没有权限,这条语句当然会出错  
  2   你的数据库中有没有“基本信息”这个表?某些老版本的数据库或者驱动程序不支持中文的表名。必须用英文。  
  3   初始化问题,m_pRecordset.CreateInstance("ADODB.Recordset");Top

2 楼coyer(test)回复于 2003-03-01 12:20:04 得分 0

m_pRecordset.CreateInstance("ADODB.Recordset");  
  这句放在open之前。Top

3 楼white_black_cat(白猫)回复于 2003-03-01 12:24:56 得分 0

我的数据库为SQL   server2000  
   
  用的是ODBC接口  
   
  CBaseSet   为CRecordset派生类Top

4 楼small_wei(small)回复于 2003-03-01 16:47:55 得分 0

id   是SQL   server2000的关键字  
  Select   [ID]   from   基本信息Top

5 楼tttt415(tttt415)回复于 2003-03-01 16:53:25 得分 0

最根本的方法,还是你自己用DEBUG方式跟踪一下MFC类库,MFC的数据库类库和MS的ACCESS结合最好,很多问题是发生在类库本身无法兼容各种数据库引起的。你跟踪到错误的地方后,使用其他的方法避免错误就可以了。  
   
  当然另外一个推荐你的方法是找一个其他的类库,这些类库往往短小精悍,也可以满足大部分的应用。尤其是程序员大本营,是一个好东东。Top

6 楼mbj()回复于 2003-03-01 21:30:50 得分 20

用的不是ADO,是DAO  
  Top

7 楼littlechen(littlechen)回复于 2003-03-01 21:44:54 得分 0

去掉中文试试看,他妈的,都是EnglishTop

8 楼white_black_cat(白猫)回复于 2003-03-04 01:46:35 得分 0

问题以解决用的是下面这种方法:  
  m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,_T(   "select   *   from   基  
  while(!m_recordset->IsEOF()){  
  str=m_recordset->m___ID   ;  
  m_combo_inid.AddString   (str);  
  m_recordset->MoveNext();  
  }  
  不过我还是想知道问题中的方法解决这个问题,本贴暂时不结,欢迎大家继续参与!!!Top

9 楼52001314(不当程序员了)回复于 2003-03-14 16:18:55 得分 50

可能是在这句出错.m_recordset->GetFieldValue("ID",str);  
   
   
  试试m_recordset->GetFieldValue((short)0,str);  
   
  或者:  
  m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,_T(   "Select   ID   as   MyID   from   基本信息"   ));  
  m_recordset->GetFieldValue("MyID",str);  
   
  Top

10 楼52001314(不当程序员了)回复于 2003-03-14 16:23:02 得分 30

哦,刚才看错了。你用的不是CRecordset,而是派生类.  
   
  CBaseSet是不是对应基本信息这个表?  
   
  我用派生类都是直接Open的。select   field1,field2会对派生类的某些字段没有赋值。  
  是不是只能用select   *?  
   
  你单步调试看看,如果Open的时候出错应该是这个问题。Top

相关问题

  • vfp数据库查询问题,在线等待
  • 请求帮忙数据库的查询问题! 在线等待!
  • 数据库查询问题,服务器weblogic,在线等待
  • 在线等待,数据库查询问题,请帮帮忙!
  • 数据库查询的问题,急!在线等待
  • 数据库查询问题,在线等待中.......
  • 问一数据库组合查询问题(在线等待)!
  • 数据库查询问题,在线等待
  • 100分求救数据库查询问题 在线等待
  • 数据库查询!在线!

关键词

  • sql server2000
  • 数据库
  • 解决
  • 信息
  • db
  • recordset
  • cbaseset
  • getfieldvalue
  • 派生类
  • 问题

得分解答快速导航

  • 帖主:white_black_cat
  • mbj
  • 52001314
  • 52001314

相关链接

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

广告也精彩

反馈

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