VC ADO dataGrid 數據庫動態綁定

今天學習了一下ADO datagrid。其實沒打算學習ADO,由於想做個表格,用了FlexGrid控件,發現不能選擇不連續的多行。於是在網上尋找,datagrid可以,於是去找相關資料,發現datagrid全都是連接數據庫,雖然不能滿足我的要求,但還是學習了一下用ADO綁定數據庫,在通過與datagrid綁定進行數據庫信息顯示。現總結如下,第一次寫博客,獻醜了。

 

新建一個基於對話框的vc工程,首先需要添加兩個控件,ADO和datagrid。下面講解綁定數據庫及他們之間的綁定。

 

其實,不用任何代碼,我們可以實現綁定一個數據庫,並將其在datagrid中顯示。利用ADO控件的屬性設置可以實現與數據庫的綁定。在設置datagrid的屬性可以實現與ADO的綁定,運行就可以實現顯示數據庫中的數據了。

 

通過代碼實現。

 

主要注意有三個智能指針:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。下面是以連接Access爲例。

 

 

_ConnectionPtr m_pConnection;

// 初始化連接

::CoInitialize(NULL);

try

{

         m_pConnection.CreateInstance(__uuidof(Connection));

}

catch(_com_error e)

{

AfxMessageBox("dha");

return FALSE;

}

 

try                 

{

m_pConnection->Open(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ASIAa.mdb"),_T(""),_T(""),adModeUnknown);

}

catch(_com_error e)

{

TRACE("%s",e);

AfxMessageBox("Êý¾Ý¿âÁ¬½Óʧ°Ü£¬È·ÈÏÊý¾Ý¿âASIAa.mdbÊÇ·ñÔÚµ±Ç°Â·¾¶ÏÂ!");

return FALSE;

}      

_RecordsetPtr m_pRecordset;

m_pRecordset.CreateInstance(__uuidof(Recordset));

 

try

{

m_pRecordset->CursorLocation = adUseClient; 

// m_pRecordset=m_pConnection->Execute("Select * from ASIAa",NULL,adCmdText);              

        m_pRecordset->Open("Select * from ASIAa",m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

 

}

catch(_com_error *e)

{

AfxMessageBox(e->ErrorMessage());

}      

    while(!m_pRecordset->EndOfFile)

{

        AfxMessageBox((_bstr_t)m_pRecordset->GetCollect("Country"));

        break;

}

// m_ado.SetRecordSource()

m_dataGrid.SetRefDataSource(NULL);

m_dataGrid.SetRefDataSource((LPUNKNOWN)m_pRecordset);

m_dataGrid.ReBind();

m_dataGrid.Refresh();

CoUninitialize();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章