| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3262 人关注过本帖
标题:c:\program files\microsoft visual studio\vc98\mfc\include\afxv_w32.h(1 ...
只看楼主 加入收藏
ljt
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:191
专家分:431
注 册:2009-4-6
结帖率:90.48%
收藏
已结贴  问题点数:20 回复次数:4 
c:\program files\microsoft visual studio\vc98\mfc\include\afxv_w32.h(14) : fatal
看到一本书上这样写,把对数据库的操作写成一个类,然后直接调用就行了,可是我这里怎么出错了,我在stdafx。h中已经导入了库#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")

在说明一点,我用的是静态编译

这是类中的一些函数:

void ADOConn::OnInitADOConn()
{
    //初始化OLE/com库环境
    ::CoInitialize(NULL);
    try
    {
        m_pConnection.CreateInstance("ADODB.Connection");
        //设置连接字符串,必修是BSTR型或者_bstr_t类型
        _bstr_t strConnect="Provider=SQLOLEDB;Server=HAPPY-MMNL94o2E\OPENSURF;Database=HR;\
            uid=HAPPY-MMNL94o2E\Adinistrator;pwd=111111";
            //server和uid、pwd的设置根据实际情况来设定
            m_pConnection->Open(strConnect,"","",adModeUnknown);
    }
    catch(_com_error e)
    {
        AfxMessageBox(e.Description());
    }
}
//执行查询
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
    try
    {//连接数据库,如果Connection对象为空,则重新连接数据库
        if(m_pConnection==NULL)
            OnInitADOConn();
        //创建记录集对象
        m_pRecordset.CreateInstance(_uuidof(Recordset));
        //取得表中的记录
        m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,
            adCmdText);
    }
    catch(_com_error e)
    {
        AfxMessageBox(e.Description());
    }
    //返回记录集
    return m_pRecordset;
}
//执行sql语句,Insert Update _variant_t
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
    try{
        //是否连接数据库
        if(m_pConnection==NULL)
            OnInitADOConn();
        m_pConnection->Execute(bstrSQL,NULL,adCmdText);
        return true;
    }
    catch(_com_error e)
    {
        AfxMessageBox(e.Description());
        return false;
    }
}
void ADOConn::ExitConnect()
{
    if(m_pRecorset!==NULL)
        m_pRecordset->Close();
    m_pConnection->Close();
    //释放环境
    ::CoUninitialize();
}

错误提示:c:\program files\microsoft visual studio\vc98\mfc\include\afxv_w32.h(14) : fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>


[ 本帖最后由 ljt 于 2010-9-16 17:24 编辑 ]
搜索更多相关主题的帖子: mfc program afxv fatal files 
2010-09-16 17:22
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:20 
这是一个宏判断的问题,你必须把<stdafx.h>放在其他包含头文件的前面。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-09-16 17:33
ljt
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:191
专家分:431
注 册:2009-4-6
收藏
得分:0 
回复 2楼 东海一鱼
确实所有的都在前面啊。
2010-09-16 19:01
ljt
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:191
专家分:431
注 册:2009-4-6
收藏
得分:0 
问题解决了,#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
不能放在stdafx.h下面,可能与哪个头文件有重复,我把他发到app类中就没事了
2010-09-17 09:19
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
好,不错。你还可以试试自己动态加载这个TypeLib。干脆就不用#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")了。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-09-17 12:08
快速回复:c:\program files\microsoft visual studio\vc98\mfc\include\afxv_w3 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014972 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved