VC使用ADO控件
1、包含#import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","adoEOF")
2、提供ATL支持
ADO与控件的数据源绑定代码
1、连接数据库
_ConnectionPtr m_pConnection;
hrConnection = m_pConnection.CreateInstance("ADODB.Connection"); //创建Connection对象
hrConnection = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..//data.mdb","","",adModeUnknown);
2、关闭连接
m_pConnection->Close();
m_pConnection = NULL;
3、打开记录集
_RecordsetPtr m_pRecordsetTable;
m_pRecordset.CreateInstance("ADODB.Recordset"); //创建Recordset对象
m_pRecordset->Open((_variant_t)(LPCTSTR)"SELECT * FROM 节点",m_pConnection.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText);
4、关闭记录集
m_pRecordset->Close();
m_pRecordset = NULL;
3、绑定数据源
CDataGrid m_DataGrid;
m_pRecordset->CursorLocation = adUseClient;
m_DataGrid.SetRefDataSource((LPUNKNOWN)m_pRecordset);
注意:
1、用时要包括检测的代码,以及检查异常的代码
2、 Open 里的参数一定要自己自己
3、跟数据源绑定时,不能关闭记录集
4、打开记录集时,以指针形式读取记录集中数据
4、数据导入法
m_pRecordsetSet->Fields->GetItem(1)->Name //获得列名
m_pRecordsetSet->Fields->GetItem(1)->GetValue(); //获得数据项的值
m_pRecordsetSet->Fields->GetItem(1)->GetText(); //获得数据项的格式化之后的文本
m_pRecordsetSet->Fields->GetCount(); //获得域集的个数
long pl = m_pRecordsetSet->RecordCount; //数据项数
5、数组导入法
获取数据数组的方法
_variant_t data = m_pRecordsetSet->GetRows(pl,(long)0); //可以选中某列
数组获取数据
long IUBound;
SafeArrayGetUBound(data.parray,2,&IUBound); //获得数组中最大项的索引,0开头的
long rgIndices[2];
_variant_t result;
rgIndices[0] = i; //列数
rgIndices[1] = j; //行数
SafeArrayGetElement(data.parray,&rgIndices[0],&result); //从数组(参数1)中,取出某维某索引(参数2)的值,放到结果(参数3)中