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

vc用ado调用access

楼主tomcindy()2006-06-03 11:31:51 在 VC/MFC / 数据库 提问

用mfc创建了一个基于对话框,编译通过了,但是运行提示  
  stdafx.h中这样  
  ……//{{AFX_INSERT_LOCATION}}  
  //   Microsoft   Visual   C++   will   insert   additional   declarations   immediately   before   the   previous   line.  
   
  #endif   //   !defined(AFX_STDAFX_H__8634BE02_B702_4B0E_ACEB_69973718B17D__INCLUDED_)  
  #import   "c:\program   files\common   files\system\ado\msado15.dll"   no_namespace   rename("EOF","adoEOF")  
   
  testDlg.h中这样:  
  ……class   CTestDlg   :   public   CDialog  
  {  
  //   Construction  
  public:  
  CTestDlg(CWnd*   pParent   =   NULL); //   standard   constructor  
  _ConnectionPtr     m_conn;  
  _RecordsetPtr       m_rec;  
   
  其他:BOOL   CTestDlg::OnInitDialog()  
  {  
        AfxOleInit();  
  CDialog::OnInitDialog();  
   
  m_conn.CreateInstance(_uuidof(Connection));  
  m_conn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=mydb.mdb","","",adModeUnknown);  
   
  m_conn=NULL;  
  m_rec.CreateInstance(_uuidof(Recordset));  
   
  m_rec->Open("SELECT*FROM   mytable",m_conn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);  
   
  运用:  
  void   CTestDlg::OnAdd()    
  {    
  //   TODO:   Add   your   control   notification   handler   code   here  
  UpdateData(TRUE);  
  _variant_t   varname,varvalue;    
  m_rec->AddNew();  
  varname.SetString("姓名");  
  varvalue.SetString(m_sName) ;  
  m_rec->Update(varname,varvalue);  
  varname.SetString("性别");  
  varvalue.SetString(m_sSex);  
  m_rec->Update(varname,varvalue);  
  UpdateData(FALSE);  
  }  
   
  void   CTestDlg::OnDelete()    
  {  
  //   TODO:   Add   your   control   notification   handler   code   here  
  m_rec->Delete(adAffectCurrent);  
  }  
   
  void   CTestDlg::OnRead()    
  {  
  //   TODO:   Add   your   control   notification   handler   code   here  
  _variant_t   vFieldValue;CString   sname,ssex;  
  m_rec->MoveFirst();  
  vFieldValue=m_rec->GetCollect("姓名");  
  sname=(LPCSTR)_bstr_t(vFieldValue);  
  vFieldValue.Clear();  
  vFieldValue=m_rec->GetCollect("性别");  
  ssex=(LPCSTR)_bstr_t(vFieldValue);  
  m_rec->MoveNext();  
   
  m_sName=sname;m_sSex=ssex;  
  LVITEM   lvi;  
  lvi.iItem=m_list.GetItemCount();  
  lvi.mask=LVIF_TEXT;  
  lvi.pszText=(LPSTR)(LPCSTR)sname;  
  lvi.iSubItem=0;  
  m_list.InsertItem(&lvi);  
  m_list.SetItemText(lvi.iItem,1,(LPSTR)(LPCTSTR)ssex);  
  UpdateData(FALSE);  
  }  
   
  编译通过了,但是提示c:\fixture_element\test\debug\msado15.tlh(407)   :   warning   C4146:   unary   minus   operator   applied   to   unsigned   type,   result   still   unsigned  
  然后提示不能运行:  
  runtime   error!说什么在一个unusual   way  
   
  望指点!!谢谢 问题点数:40、回复次数:4Top

1 楼jbczj(人见人爱)回复于 2006-06-03 16:51:39 得分 0

用daoTop

2 楼jinxuliang(smielfox)回复于 2006-06-03 23:59:37 得分 5

是说你给一个无符号整数前面加了负号,返回值将仍然是无符号类型.也就是说变不为负数.Top

3 楼handsomerun(毛毛)回复于 2006-06-04 18:21:56 得分 30

【2】用#import指令引入ADO类型库  
  我们在stdafx.h中加入如下语句:(stdafx.h这个文件哪里可以找到?你可以在FileView中的Header   Files里找到)  
   
  #import   "c:\program   files\common   files\system\ado\msado15.dll"   no_namespace   rename("EOF","adoEOF")  
  这一语句有何作用呢?其最终作用同我们熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。  
   
  几点说明:  
  (1)   您的环境中msado15.dll不一定在这个目录下,请按实际情况修改  
  (2)   在编译的时候肯能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告。  
  msado15.tlh(405)   :   warning   C4146:   unary   minus   operator   applied   to   unsigned   type,   result   still   unsigned    
   
  Top

4 楼handsomerun(毛毛)回复于 2006-06-04 18:22:34 得分 5

至于运行出错,嗯,嗯,你跟踪一下,看执行到哪出错呢Top

相关问题

关键词

得分解答快速导航

  • 帖主:tomcindy
  • jinxuliang
  • handsomerun
  • handsomerun

相关链接

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

广告也精彩

反馈

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