1. 程式人生 > >vs2008 MFC使用DataGrid控制元件繫結資料庫

vs2008 MFC使用DataGrid控制元件繫結資料庫

1、首先在對話方塊上點選右鍵,選擇插入ActiveX控制元件,向下拖拉,找到MicrosoftDataGrid Control 6.0(SP6)(OLEDB),點選確定,在介面上會新增一個控制元件。

2、在介面上點選該控制元件後,點選右鍵增加控制變數m_dataGrid。

3、在對話方塊標頭檔案中增加:

#import "c:\program files\common files\system\ado\msado15.dll"no_namespace rename("EOF","adoEOF")

引入dll檔案;

4、在對話方塊類中新增變數宣告:

     _ConnectionPtrm_pConnection;

     _RecordsetPtrm_pRecordset;

5、在對話方塊初始化函式中增加 com初始化:

     CoInitialize(NULL);

6、增加對話方塊對WM_DESTROY的處理,在OnDestroy函式中增加關閉操作:

     m_pRecordset->Close();  //關閉記錄集

     if(m_pConnection->State)

     {

         m_pConnection->Close();

     }

     CoUninitialize();    //關閉com環境

7、連線資料庫操作,單獨寫一個函式。

void

CtestAdoAccessDlg::ConnectDb()

{

     m_pConnection.CreateInstance("ADODB.Connection");

     try

     {

         m_pConnection->ConnectionTimeout= 8;

         m_pConnection->PutCursorLocation(adUseClient);

         m_pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0;DataSource=D:\\test\\testAccess\\Debug\\Demo.mdb;"

,"","",adModeUnknown);

     }

     catch(_com_error e)

     {

         AfxMessageBox("資料庫連線失敗");

         return;

     }

     //---------初始化記錄集物件---------------//

     try

     { 

          m_pRecordset.CreateInstance("ADODB.Recordset");

         //開啟記錄集

         m_pRecordset->Open("SELECT * FROM DemoTable",_variant_t((IDispatch*)m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);

     }

     catch(_com_error e)///捕捉異常

     {

         CStringtemp;

         temp.Format("aaa連線資料庫錯誤資訊:%s",e.ErrorMessage());

         AfxMessageBox(temp);

         return;

     }

     m_dataGrid.putref_DataSource(NULL);

     m_dataGrid.putref_DataSource((LPUNKNOWN)m_pRecordset);

     m_dataGrid.Refresh();

}