我测试的Sql server manager console是5.0,在实际环境中的8.0。下面代码在测试环境可以通过,但是在实际环境中出现错误,在输出good21后的地方断掉。捕获例外的时候提示:invalid pointer。大家能给出点意见吗?bool updateDB_with_submit_file_info(char * strFN){ _ConnectionPtr pConn; _RecordsetPtr pPtr; _CommandPtr m_pCommand; _ParameterPtr param; CoInitialize(NULL); pConn.CreateInstance(__uuidof(Connection)); _bstr_t strSRC; strSRC = "DSN="; strSRC+=char_db_dns; strSRC+=";uid="; strSRC+=char_db_username; strSRC+=";pwd="; strSRC+=char_db_password; strSRC+=";"; _bstr_t strSQL; _variant_t RecordsAffected; std::cout<<"good1"<<endl;// if (FAILED(pConn->Open(strSRC,"","",adModeUnknown))) if (FAILED(pConn->Open(strSRC,"","",-1))) { std::cout<<"Can not access Database!"<<endl; pConn.Release(); return false; } else { std::cout<<"Can access Database!"<<endl; std::cout<<"good2"<<endl; //Open Command Object with one Parameter m_pCommand.CreateInstance(__uuidof(Command)); std::cout<<"good21"<<endl; m_pCommand->ActiveConnection=pConn; std::cout<<"good22"<<endl; m_pCommand->CommandText = "usp_modify_vsa"; std::cout<<"good23"<<endl; m_pCommand->CommandType = adCmdStoredProc; std::cout<<"good3"<<endl;
2.最好把::CoInitialize(NULL)放入程序刚初始化的地方(如OnInitDialog等)
3.判断m_pCommand创建是否成功,
例外说明:上面的代码在我的环境下测试没有问题:VS2003,ACCESS2003,XP环境,对话框模式,初始化在OnInitDialog