CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  数据库

我用SDK写的一个小程序,怎么用ADO 连接不到SQL 上去(来者有分)

楼主feifei2001(鼠标)2002-10-18 11:41:16 在 VC/MFC / 数据库 提问

我对SDK不是很熟,我的做法是这样的:  
   
  先建一个win32   Application   的"Hello   word   "程序,然后#import   ,  
  .cpp   是这样写的  
   
  include   "stdafx.h"  
  #include   ".\res\resource.h"  
   
  #define   MAX_LOADSTRING   100  
   
  //   全局实例及主窗体变量  
  HINSTANCE   hInst;  
  TCHAR   szTitle[MAX_LOADSTRING]; //   The   title   bar   text  
  TCHAR   szWindowClass[MAX_LOADSTRING]; //   The   title   bar   text  
  HWND     hMainWnd;  
   
  _ConnectionPtr   m_pConnect;  
  _RecordsetPtr   m_pRecordset;  
  char *m_pCMDBuffer;  
   
  //   Foward   declarations   of   functions   included   in   this   code   module:  
  ATOM MyRegisterClass(HINSTANCE   hInstance);  
  BOOL InitInstance(HINSTANCE,   int);  
  LRESULT   CALLBACK WndProc(HWND,   UINT,   WPARAM,   LPARAM);  
  LRESULT   CALLBACK About(HWND,   UINT,   WPARAM,   LPARAM);  
   
  int   APIENTRY   WinMain(HINSTANCE   hInstance,  
                                            HINSTANCE   hPrevInstance,  
                                            LPSTR           lpCmdLine,  
                                            int               nCmdShow)  
  {  
   
  ...  
        //初始化COM  
  if(!AfxOleInit())  
  {  
  AfxMessageBox("COM   Error!");  
  return   FALSE;  
  }  
  HRESULT   hr   =(HRESULT)0L;  
  _variant_t   RecordsAffected;  
   
  char   buf[100];  
  try  
  {  
  hr=m_pConnect.CreateInstance("ADODB.Connection");  
  TRACE("%d",hr);  
  DWORD   dwError=GetLastError();  
  sprintf(buf,"Driver={SQL   Server};Server=%s;Address=%s,1433;Network=DBMSSOCN;   Database=master;Uid=sa;Pwd=%s",cfg.szHostIP,cfg.szHostIP,   cfg.m_DbPasw);  
  if(SUCCEEDED(hr))  
  {  
  hr=m_pConnect->Open(buf,"","",adModeUnknown);  
  }  
  }  
  catch(   _com_error     e)  
  {  
  AfxMessageBox(   e.ErrorMessage());  
  return   FALSE;  
  }  
             
  ...  
  }  
   
   
  其中  
  hr=m_pConnect.CreateInstance("ADODB.Connection");   有错误。  
   
   
  hr   =-2147221008  
  GetLastError返回是2   ---------找不到文件,  
   
  我用同样的方法在用MFC的程序上是可以连接到SQL   上的,而我把上面的程序写到InitInstance   里也是一样。  
   
  不知道是什么原因?? 问题点数:100、回复次数:18Top

1 楼ZHENG017()回复于 2002-10-18 11:57:48 得分 98

 
  把if(!AfxOleInit())改成if   (!CoInitialize(NULL));  
  Top

2 楼feifei2001(鼠标)回复于 2002-10-18 12:01:51 得分 0

楼上,到这了:  
  AfxMessageBox("COM   Error!");  
   
   
  Top

3 楼feifei2001(鼠标)回复于 2002-10-18 12:40:52 得分 0

upTop

4 楼ZHENG017()回复于 2002-10-18 12:46:43 得分 0

sorry.it   should   be:  
  if   (CoInitialize(NULL)!=NULL)Top

5 楼ZHENG017()回复于 2002-10-18 12:50:18 得分 0

帮你调了下:  
  in   stdafx.h  
  add   this:  
  #include   <comdef.h>  
  #import   "c:\program   files\common   files\system\ado\msado20.tlb" no_namespace   rename   ("EOF",   "adoEOF")  
  in   cpp:  
    _ConnectionPtr   m_pConnect;  
  _RecordsetPtr   m_pRecordset;  
  HRESULT   hr   ;  
  if   (CoInitialize(NULL)!=NULL)  
  {  
  MessageBox(NULL,"COM   Error!","COM   Error!",MB_OK);  
  return   FALSE;  
  }  
  try  
  {  
  hr=m_pConnect.CreateInstance("ADODB.Connection");  
  }  
  catch(...)  
  {  
  }  
  CoUninitialize(   );  
  return   0;  
  }  
   
  Top

6 楼feifei2001(鼠标)回复于 2002-10-18 12:56:34 得分 0

好了,结了,Top

7 楼feifei2001(鼠标)回复于 2002-10-18 12:58:45 得分 0

还有错误,退出时  
   
  Runtime   error!!Top

8 楼ZHENG017()回复于 2002-10-18 13:03:08 得分 0

把CoUninitialize(   );放在WndProc()中处理WM_QUIT后调用。Top

9 楼feifei2001(鼠标)回复于 2002-10-18 13:17:44 得分 0

还是不行,好象建立了连接后不能return  
   
  Top

10 楼ZHENG017()回复于 2002-10-18 13:22:32 得分 0

m_pUserSet.CreateInstance   (__uuidof(Recordset));  
  m_commandptr.CreateInstance   (__uuidof(Command));  
  m_commandptr->ActiveConnection   =m_pConnection;  
  _bstr_t   sqltext="select   *   from   yourtable";  
  m_commandptr->CommandText   =sqltext;  
  m_commandptr->CommandType   =adCmdText;  
  m_pUserSet=m_commandptr->Execute   (NULL,NULL,adCmdUnknown);  
  Top

11 楼coyer(test)回复于 2002-10-18 14:45:37 得分 1

ZHENG017(风中王子)   (   )   真是好人。  
  我没有补充的了。Top

12 楼coolc(石头里的魔)回复于 2002-10-18 16:02:46 得分 1

upTop

13 楼feifei2001(鼠标)回复于 2002-10-19 10:46:58 得分 0

但这段程序在最后返回的时候报   Runtime   error   !  
   
   
  不知道ZHENG017(风中王子)发现没??Top

14 楼ZHENG017()回复于 2002-10-21 10:26:30 得分 0

能把你的源程序发过我看看吗?  
  zheng017@163.comTop

15 楼ZHENG017()回复于 2002-10-21 14:01:17 得分 0

to   feifei2001(动力A6)   :  
  不知道怎么搞的今天163.com和163.net都收不到信...  
  你有给我发邮件吗哈?Top

16 楼feifei2001(鼠标)回复于 2002-10-21 16:43:11 得分 0

程序已发出,多谢,Top

17 楼ZHENG017()回复于 2002-10-21 17:05:44 得分 0

1.在stdafx.h中,换成#import   "C:\Program   Files\Common   Files\System\ado\msado15.tlb"   no_namespace   rename("EOF","adoEOF")//取消掉那个编译警告信息  
  2.把char   buf[100];换成_bstr_t   buf("Driver={SQL   Server};Server=dhl;Address=127.0.0.1,1433;Network=DBMSSOCN;   Database=master;Uid=sa;Pwd=talent");  
  3.在try  
  {  
  if(SUCCEEDED(hr))  
  {  
  hr=m_pConnect->Open(buf,"","",adModeUnknown);  
  }}  
  catch(   _com_error     e)  
  {  
  //::CoUninitialize(   );  
  AfxMessageBox(   e.ErrorMessage());  
  return   FALSE;  
  }Top

18 楼firmamenthy(执子之手)回复于 2002-11-04 12:29:55 得分 0

mkTop

相关问题

  • 大家来看看PL/SQL的小程序有什么问题?
  • 请问哪里有将HQL转成SQL的小程序啊?
  • 用vb.net+sql 2000写小程序,请大家推荐一本好书?
  • 我做了个SQL server数据库备份小程序,想做个进度条
  • 用SDK写了一个小程序,可是build后发现没有图标,如何为其加上图标??
  • 我在我的SDK小程序中要画线,但是VC却说MoveTo没有定义,这是为什么?
  • 我的一个小程序想从BDE转到ADO实现,有几个小问题想问一下
  • 求proxy小程序
  • 小程序上载
  • 简单小程序!

关键词

  • hr
  • 连接
  • ado
  • sql
  • null
  • commandptr
  • pconnect
  • hinstance
  • zheng017
  • couninitialize

得分解答快速导航

  • 帖主:feifei2001
  • ZHENG017
  • coyer
  • coolc

相关链接

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

广告也精彩

反馈

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