CoInitialize(NULL);  //初化COM組件 HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");//創建Connection對象
if (SUCCEEDED(hr))
{
hr = m_pConnection->Open("Driver=PostgreSQL Unicode;Server=127.0.0.1;Database=VersionManager;UID=test;PWD=test", "", "", adModeUnknown); if (FAILED(hr))
{
m_pConnection->Close();
AfxMessageBox("數據庫連接失敗.");
return FALSE;
}
}
}
catch (_com_error e)//捕捉異常
{
CString errormessage;
errormessage.Format("連接數據庫失敗!\r\n錯誤信息:%s", e.ErrorMessage());
AfxMessageBox(errormessage);//顯示錯誤信息
} sql.Format("SELECT col_project_version FROM table_project_info WHERE col_project_name ='%s'", m_Name);
try
{
m_pConnection->BeginTrans();
hr = m_pRecordset.CreateInstance("ADODB.Recordset");
if (SUCCEEDED(hr))
{
hr = m_pRecordset->Open((_variant_t)sql, variant_t((IDispatch*)m_pConnection), adOpenDynamic, adLockOptimistic, adCmdText);
}
while (!m_pRecordset->adoEOF)
{
number = m_pRecordset->GetCollect("col_project_version");  //獲取數據
szVersion.Format("%s", (LPCTSTR)_bstr_t(number));  //轉換輸出 m_pRecordset->MoveNext();
}
m_pRecordset->Close();
m_pConnection->CommitTrans();
}
catch (_com_error e)
{
AfxMessageBox("連接數據庫失敗!");
m_pConnection->RollbackTrans();
}
CoUninitialize(); //释放com组件

解决方案 »

  1.   

    Debug下单步看看哪个函数调用失败了?
      

  2.   

    hr = m_pRecordset->Open((_variant_t)sql, variant_t((IDispatch*)m_pConnection), adOpenDynamic, adLockOptimistic, adCmdText);跑完这句就,就直接跑到数据库连接失败. 前面初化COM和连接数据库都正常.catch (_com_error e)
    {
    AfxMessageBox("連接數據庫失敗!");
    m_pConnection->RollbackTrans();
    }
    CoUninitialize(); //释放com组件 
      

  3.   

    Access 、SQLServer 、MySQL都没有问题,就PostgreSQL使用ADO连接数据库查不到值........