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

新手迷茫中,谁帮我看看,谢谢~!

楼主islcy(中毒)2005-03-03 12:33:03 在 VC/MFC / 数据库 提问

刚刚接触ADO数据库编程,做一个ADO操作ACCESS的例子,遇到下面问题,谁能帮帮我,谢谢  
   
  当用户点击列表框时,把相应数据显示在变量为m_edit1,m_edit2文本框中,可以编译通过但鼠标点击列表框时会错误,为什么阿?  
   
   
  void   CMYno1Dlg::OnSelchangeList1()    
  {  
                  _RecordsetPtr           m_pRecordset;  
   
                  int   curSel   =   m_list.GetCurSel();  
   
                  _variant_t   var;  
   
                m_pRecordset->MoveFirst();  
                m_pRecordset->Move(long(curSel));  
   
                var   =   m_pRecordset->GetCollect("Name");  
          if(var.vt   !=   VT_NULL)  
                  m_edit1   =(LPCSTR)_bstr_t(var);  
                var   =   m_pRecordset->GetCollect("Age");  
          if(var.vt   !=   VT_NULL)  
                  m_edit2   =   (LPCSTR)_bstr_t(var);  
                   
              UpdateData(false);  
   
  }  
  问题点数:0、回复次数:5Top

1 楼pinel()回复于 2005-03-03 12:39:21 得分 0

你的m_pRecordset是空的呀,要先connect一个数据库,open一个表Top

2 楼T97102003(池塘里的水手)回复于 2005-03-03 12:42:03 得分 0

点击列表直接把列表里的值显示不就行了。  
  Top

3 楼islcy(中毒)回复于 2005-03-03 12:50:06 得分 0

"点击列表直接把列表里的值显示不就行了"  
  也行啊,这个是别人的例子里面的,我想知道他是怎么做的Top

4 楼islcy(中毒)回复于 2005-03-03 12:54:30 得分 0

“你的m_pRecordset是空的呀,要先connect一个数据库,open一个表“  
   
  在OnInitDialog()连接数据库了阿,下面的是,找了些文章还是不懂  
   
   
   
  BOOL   CMYno1Dlg::OnInitDialog()  
  {  
  CDialog::OnInitDialog();  
  //   初始化COM,创建ADO连接等操作  
  AfxOleInit();  
  //添加一个指向Connection对象的指针  
  _ConnectionPtr   m_pConnection;  
          m_pConnection.CreateInstance(__uuidof(Connection));  
   
  //   在ADO操作中建议语句中要常用try...catch()来捕获错误信息  
  try                    
  {    
            //   打开本地Access库Demo.mdb    
                m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=Demo.mdb","","",adModeUnknown);    
  }    
          catch(_com_error   e)    
  {    
                AfxMessageBox("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!");    
                return   FALSE;    
  }    
   
   
   
            _RecordsetPtr   m_pRecordset;  
            m_pRecordset.CreateInstance(__uuidof(Recordset));  
   
  //   在ADO操作中建议语句中要常用try...catch()来捕获错误信息,  
  //   因为它有时会经常出现一些意想不到的错误。jingzhou   xu  
  try  
  {  
  m_pRecordset->Open("SELECT   *   FROM   DemoTable",//   查询DemoTable表中所有字段  
  m_pConnection.GetInterfacePtr(),     //   获取库接库的IDispatch指针  
  adOpenDynamic,  
  adLockOptimistic,  
  adCmdText);  
  }  
  catch(_com_error   *e)  
  {  
  AfxMessageBox(e->ErrorMessage());  
  }  
   
   
   
    _variant_t   var;    
  CString   strName,strAge;    
  try    
  {  
  //察看表是否为空  
  if(!m_pRecordset->BOF)    
  m_pRecordset->MoveFirst();    
  else    
  {    
  AfxMessageBox("表内数据为空");    
   
  }    
   
  //   读入库中各字段并加入列表框中    
  while(!m_pRecordset->adoEOF)    
  {    
  var   =   m_pRecordset->GetCollect("Name");    
  if(var.vt   !=   VT_NULL)    
  strName   =   (LPCSTR)_bstr_t(var);    
  var   =   m_pRecordset->GetCollect("Age");    
  if(var.vt   !=   VT_NULL)    
  strAge   =   (LPCSTR)_bstr_t(var);    
   
  m_list.AddString(   strName   +   "   -->   "+strAge   );    
   
  m_pRecordset->MoveNext();    
  }    
   
  //   默认列表指向第一项,同时移动记录指针并显示    
  m_list.SetCurSel(0);    
  }    
  catch(_com_error   *e)    
  {    
  AfxMessageBox(e->ErrorMessage());    
  }        
   
   
   
   
   
  Top

5 楼pinel()回复于 2005-03-04 09:22:35 得分 0

你在OnInitDialog()里的_RecordsetPtr   m_pRecordset;是函数体内的局部变量,而OnSelchangeList1()   函数的同名变量其实无关,你应该把它放在类声明中作为类变量。这是变量作用域问题,C++的基本问题,多看书吧.Top

相关问题

  • 迷茫中,大虾帮忙!
  • 我很迷茫,谁帮帮我...............
  • 我很迷茫
  • 我很迷茫。。。
  • 迷茫的我
  • 我的迷茫
  • ◇◆◇ 迷茫中.。.。. (enmity) ◇◆◇
  • 迷茫中?
  • SOS迷茫中C 我该怎么办???
  • 都进来看看吧,毕业迷茫中.帮我出出主意.

关键词

  • 数据库
  • ado
  • 连接
  • precordset
  • 点击列表
  • pconnection
  • oninitdialog
  • vt
  • mdb
  • edit

得分解答快速导航

  • 帖主:islcy

相关链接

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

广告也精彩

反馈

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