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();

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值