我已经在StdAfx.h加入(我的project是single Document)
“#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("LockTypeEnum","newLockTypeEnum") rename("DataTypeEnum","newDateTypeEnum") rename("FieldAttributeEnum","newFieldAttributeEnum") rename("EditModeEnum","newEditModeEnum") rename("RecordStatusEnum","newRecordStatusEnum") rename("ParameterDirectionEnum","newParameterDirectionEnum")”
我在CwinAPP的OnInitDialog()中也已经{AfxOleInit();...}了,我在CXXXDialog:OnInitDialog()中也加入如下代码:{
    CDialog::OnInitDialog();    AfxEnableControlContainer();

m_pConnection.CreateInstance("ADODB.Connection");

try
{
m_pConnection->ConnectionTimeout = 8;
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=studentinformation","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("连接数据库失败!");
return FALSE;

      .....
}为什么就总是“连接数据库失败!!!!对于数据库表的存放地点有什么要求?要不要在ODBC上添加?

解决方案 »

  1.   

    没有初始化com环境,在InitInstance中::if(CoInitialize(NULL)) return FALSE;
    在ExitInstance中加入CoUninitialize(NULL)
      

  2.   

    你的single document project怎么会有dialog?
      

  3.   

    还有ado是不需要odbc数据源支持的
      

  4.   

    我在CwinAPP的OnInitDialog()中也已经{AfxOleInit();...}也是初始化com环境的阿,书上都这么说的?还有ado是不需要odbc数据源支持的,那么表可以放任意地方吗?
      

  5.   

    ado可以访问关系/非关系数据库,这就是ado强大的地方!
      

  6.   

    初始化com环境应该在InitInstance()中!
      

  7.   

    AfxOleInit();跟 CoInitialize(NULL) 是有区别的
    还要取得调用的那个智能指针的地址
    如:
    _rePtr.CreateInstance(__uuidof(Recordset))