VC++ ADO连接SQL Server问题与解决方案

以前没有用VC连接过数据库,今天由于帮人做毕设
就尝试了一下。
(1)建立ODBC数据源。
参考方法:
牢记:在此之前要把自己的数据库服务器启动,
不然在服务器选择的时候看不到自己的服务器。
(2)
   在工程的stdafx.h里用#import引入ADO库文件。
                      <script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

  
  #import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("BOF","adoBOF") rename("EOF","adoEOF")
   牢记:一定要在所有的#include后加入这句话,不然会出现。 fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #:nclude <windows.h>
原文引用如下:
非MFC工程使用MFC库时的问题及解决办法

一、问题由来

 

vc6和vc71的工程向导中都包含非MFC的工程,诸如win32 console project, win32 static library。非MFC工程创建时是不支持MFC特性的,然后我们在处理实际问题时有时会用到MFC相关类,如Cstring, Cedit等等,这是很正常的。可能有人会说,为何不在一开始就创建MFC工程呢?问题在于MFC工程会产生很多向导生成代码,如基于单文档的工程会有View,Doc等类,很多时候我们只需要一个空工程就可以了。

 

 

二、常见问题
非MFC工程使用MFC库时最常见的问题就是windows.h重复包含错误,具体如下:
fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>

 

 

三、解决办法
非MFC工程使用MFC库时,可参考以下步骤
1、工程设置中,将MFC的使用由原来的“使用标准windows库”改为“在共享DLL中使用MFC”(VC71)
如果是英文版,相关选项是:
Microsoft Foundation Classes: Use MFC in a shared dll, no using MFC(VC6)
NOTE:因为我用的是中文版的vc71,英文版的vc6.
2、头文件包含
不同的MFC类需包含的头文件是不一样的。
常用的类,如Cstring, Cedit 等,包含afxwin.h就可以了
如果不清楚包含什么头文件的话,可以同msdn进行查询,msdn中,对于MFC类的介绍中,都会给出相应的header file requirement.
3、#include 语句一定要写在首行
这一点很重要,通常出现前面讲到的windows.h重复包含错误,都是因为#include 语句没有写在首行。
另外还要注意的是,如果#include语句是在一个头文件里,那么对应头文件的包含也要写在首行。示例如下:
=============
test.h文件的内容如下:
#include <afxwin.h> //保证该语句在首行
test.cpp的文件内容如下:
#include “test.h” //同样也要保证该语句在首行
=============
ps: 这么做的具体原因我也不知道,我是在实际调试中琢磨出这个道理的。我自己在这个问题上花了很多冤枉时间,写下该篇,就是希望大家不要在这个问题上绊脚。

 (3)在进行连接之前要初始化OLE环境,初始化语句
   ::CoInitialize(NULL); //初始化OLE/COM库环境 
  
  AfxOleInit();//初始化OLE/COM库环境(MFC自带的)
    这两句话缺一不可,不然会有运行期错误
    程序运行结束后记住::CoUninitialize();  //关闭OLE/COM库环境,释放资源
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值