真没人知道。再说的详细一点:
确切死的位置在CCommandBase::CreateCommand里的spCreateCommand->CreateCommand(NULL, IID_ICommand, (IUnknown**)&m_spCommand);

解决方案 »

  1.   

    haha,解决了。
    当连接数据库时
    CDBPropSet dbinit(DBPROPSET_DBINIT); dbinit.AddProperty(DBPROP_AUTH_PASSWORD, bstrPassword);
    dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, false);
    dbinit.AddProperty(DBPROP_AUTH_USERID, bstrUser);
    if (!m_strDatabaseName.IsEmpty())
    dbinit.AddProperty(DBPROP_INIT_CATALOG, bstrDatabase);
    dbinit.AddProperty(DBPROP_INIT_DATASOURCE, bstrServer);
    dbinit.AddProperty(DBPROP_INIT_LCID, (long)1049);
    dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)DBPROMPT_NOPROMPT);
    dbinit.AddProperty(DBPROP_INIT_TIMEOUT, (long)15);// if(FAILED(pDataSource->Open(m_strDbType, &dbinit)))
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`这句改成下面这句就ok了,不知道为什么
    if (FAILED(pDataSource->OpenWithServiceComponents(m_strDbType, &dbinit)))
    {
    if (bShowDialog)
    {
    CString strMsg = GetErrorMessage(); AfxMessageBox(strMsg);
    }
    goto ErrorExit;
    }