我在stdafx.h文件中#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
然后在按钮的响应函数中添加代码如下:void IDS::OnImport() 
{
// TODO: Add your control notification handler code here
CString sql;
CoInitialize(NULL);
    _ConnectionPtr m_pConnection;
_variant_t RecordsAffected;

try{
HRESULT hr=m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
m_pConnection->ConnectionTimeout=3;
m_pConnection->Open("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=db1;Data Source=JEFFY-A73938B38","","",adModeUnknown);
AfxMessageBox("数据库连接成功!");
//return true;
}
}
catch(_com_error e)
{
CString temp;
temp.Format("数据库连接出错:%s",e.ErrorMessage());
AfxMessageBox(temp);
//return false;
}

    int num=m_list.GetItemCount();
for(int i=0;i<num;i++)
{
        CString time=m_list.GetItemText(i,0);
CString info=m_list.GetItemText(i,1);
CString proto=m_list.GetItemText(i,2);
CString sip=m_list.GetItemText(i,3);
CString sport=m_list.GetItemText(i,4);
CString dip=m_list.GetItemText(i,5);
CString dport=m_list.GetItemText(i,6);

sql = "Insert into data values('"+time+"','"+info+"','"+proto+"','"+sip+"','"+sport+"','"+dip+"','"+dport+"')";

try
{

m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText);

}
catch(_com_error e)
{
CString temp;
temp.Format("出错:%s",e.ErrorMessage());
AfxMessageBox(temp);
}
}
}
出现的错误是:
E:\存底\新建文件夹\snortTest\IDS.cpp(397) : error C2065: '_ConnectionPtr' : undeclared identifier
E:\存底\新建文件夹\snortTest\IDS.cpp(397) : error C2146: syntax error : missing ';' before identifier 'm_pConnection'
E:\存底\新建文件夹\snortTest\IDS.cpp(397) : error C2065: 'm_pConnection' : undeclared identifier
E:\存底\新建文件夹\snortTest\IDS.cpp(398) : error C2065: '_variant_t' : undeclared identifier
E:\存底\新建文件夹\snortTest\IDS.cpp(398) : error C2146: syntax error : missing ';' before identifier 'RecordsAffected'
E:\存底\新建文件夹\snortTest\IDS.cpp(398) : error C2065: 'RecordsAffected' : undeclared identifier
E:\存底\新建文件夹\snortTest\IDS.cpp(401) : error C2228: left of '.CreateInstance' must have class/struct/union type
E:\存底\新建文件夹\snortTest\IDS.cpp(404) : error C2227: left of '->ConnectionTimeout' must point to class/struct/union
E:\存底\新建文件夹\snortTest\IDS.cpp(405) : error C2227: left of '->Open' must point to class/struct/union
E:\存底\新建文件夹\snortTest\IDS.cpp(405) : error C2065: 'adModeUnknown' : undeclared identifier
E:\存底\新建文件夹\snortTest\IDS.cpp(410) : error C2061: syntax error : identifier '_com_error'
E:\存底\新建文件夹\snortTest\IDS.cpp(410) : error C2310: catch handlers must specify one type
E:\存底\新建文件夹\snortTest\IDS.cpp(413) : error C2065: 'e' : undeclared identifier
E:\存底\新建文件夹\snortTest\IDS.cpp(413) : error C2228: left of '.ErrorMessage' must have class/struct/union type
E:\存底\新建文件夹\snortTest\IDS.cpp(418) : error C2317: 'try' block starting on line '400' has no catch handlers
E:\存底\新建文件夹\snortTest\IDS.cpp(434) : error C2227: left of '->Execute' must point to class/struct/union
E:\存底\新建文件夹\snortTest\IDS.cpp(434) : error C2065: '_bstr_t' : undeclared identifier
E:\存底\新建文件夹\snortTest\IDS.cpp(434) : error C2146: syntax error : missing ')' before identifier 'sql'
E:\存底\新建文件夹\snortTest\IDS.cpp(434) : error C2059: syntax error : ')'
E:\存底\新建文件夹\snortTest\IDS.cpp(437) : error C2061: syntax error : identifier '_com_error'
E:\存底\新建文件夹\snortTest\IDS.cpp(437) : error C2310: catch handlers must specify one type
E:\存底\新建文件夹\snortTest\IDS.cpp(440) : error C2228: left of '.ErrorMessage' must have class/struct/union type
E:\存底\新建文件夹\snortTest\IDS.cpp(443) : error C2317: 'try' block starting on line '432' has no catch handlers
怎么解决啊?

解决方案 »

  1.   

    你确定点的是rebuild all?全部重建?
      

  2.   

    C:\Program Files\Common Files\System\ado\msado15.dll
    //确定此文件在此目录下?
      

  3.   

    试试在OnInitDialog()加入这句BOOL CServerDlg::OnInitDialog()
    {
    AfxOleInit(); //初始化COM库
    }
      

  4.   

    估计import了错误的文件
    是不是把
    C:\Program Files\Common Files\System\ado\msado15.dll 
    写成
    C:\Program Files\Common Files\System\ado\msador15.dll 
      

  5.   

    CoInitialize(NULL);   应该写成::ConInitialize(NULL);
      

  6.   

    #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF") 改为#import "C:\Program Files\Common Files\System\ado\msado15.dll" \
    no_namespace rename ("EOF","adoEOF") 
      

  7.   

    #import "c:\program files\common files\system\ado\msado15.dll" \
    no_namespace \
    rename ("EOF", "adoEOF") 
      

  8.   

    我有个工程使用的是以下语句,没发现问题,可供参考:#import "C:\Program Files\Common Files\System\ado\msado15.dll" rename_namespace("ADODB")\
    rename("EOF","ADOEOF")
    using namespace ADODB ;
      

  9.   

    BOOL CServerDlg::OnInitDialog()
    {
    AfxOleInit(); //初始化COM库
    }
      

  10.   

    我一直都是这样用的,没啥问题啊,工程发给我,帮你看看 [email protected]
      

  11.   

    #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF")
      

  12.   

    C:\Program Files\Common Files\System\ado确定一下这个目录下有没有这个msado15.dll文件。可能你把VC装到别的目录下了。拷过来就行。
      

  13.   

    邮箱:[email protected]发过来看看,帮你编译一下。
      

  14.   

    #include<comdef.h>
    #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF","adoEOF")
      

  15.   

    #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
    这句话你确定加在了stdafx.h而不是stdafx.cpp里?