在Access中建立数据库如下图
保存为2002-2003数据库格式(.mdb后缀)
要在一个MFC对话框窗体中,用List Control控件将数据表library的数据读取并显示
建立一个对话框项目ex3
在对话框窗体选择List control控件摆放。
按图设置控件属性:
样式设置为Report
ID设置为IDC_BOOK_LIST
右键控件,选择添加变量,变量名为m_book,其他设置如下图。
在Dlg.cpp文件中添加代码如下
// TODO: 在此添加额外的初始化代码
CRect rect;
// 获取编程语言列表视图控件的位置和大小
m_book.GetClientRect(rect);
// 为列表视图控件添加全行选中和栅格风格
m_book.SetExtendedStyle(m_book.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
// 为列表视图控件添加三列
m_book.InsertColumn(0, _T("ID"), LVCFMT_CENTER, rect.Width() / 5, 0);
m_book.InsertColumn(1, _T("图书编码"), LVCFMT_CENTER, rect.Width() / 5, 0);
m_book.InsertColumn(2, _T("图书名称"), LVCFMT_CENTER, rect.Width() / 5, 1);
m_book.InsertColumn(3, _T("图书作者"), LVCFMT_CENTER, rect.Width() / 5, 2);
m_book.InsertColumn(4, _T("出版社名"), LVCFMT_CENTER, rect.Width() / 5, 3);
在stdafx.h头文件中添加代码
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")
要确保msado15.dll文件的路径正确。
如果这里报错可以执行一次 生成 - 重新生成解决方案。
在Dlg.h头文件中设置连接句柄1
_ConnectionPtr m_pConnection;
在Dlg.h头文件中设置记录集句柄
//定义一个指向Recordset对象的指针
_RecordsetPtr m_pRecordset;
在Dlg.h头文件中定义列名变量
CString id, bm, mc, zz, cb;
在Dlg.cpp中进行数据库连接
AfxOleInit();//初始化相应的Com环境
AfxEnableControlContainer();
m_pConnection = NULL;
m_pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->ConnectionString = "uid=;pwd=;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=F:/myData/library.mdb;";
//F:/myData/library.mdb是之前建立的数据库的绝对路径。
//连接字符串
m_pConnection->Open(L"", L"", L"", adCmdUnspecified); //打开本地Access库library.mdb
利用Connection对象的Execute方法执行SQL命令
Execute方法的原型:
Execute (_bstr_t CommandText, VARIANT * RecordsAffected, long Options )
Execute执行完后返回一个指向记录集的指针,即m_pRecordset
_bstr_t ha = "select * from library"; //查询ZRN表里的数据
m_pRecordset = m_pConnection->Execute(ha, NULL, adCmdText); //获取记录集
int i = 0;
while (!m_pRecordset->adoEOF)
{
id = (char*)(_bstr_t)m_pRecordset->GetCollect("ID");
bm = (char*)(_bstr_t)m_pRecordset->GetCollect("图书编码"); //xm,dz,yb 分别为你自己数据库的列名
mc = (char*)(_bstr_t)m_pRecordset->GetCollect("图书名称"); //把这一记录中数据库里dz列下的值给字符串dz
zz = (char*)(_bstr_t)m_pRecordset->GetCollect("图书作者");
cb = (char*)(_bstr_t)m_pRecordset->GetCollect("出版社名");
m_book.InsertItem(i, _T(""));
m_book.SetItemText(i, 0, id); //添加到list Control 中的第i行的第一列下
m_book.SetItemText(i, 1, bm); //添加到list Control 中的第i行的第二列下
m_book.SetItemText(i, 2, mc); //添加到list Control 中的第i行的第三列下
m_book.SetItemText(i, 3, zz); //添加到list Control 中的第i行的第四列下
m_book.SetItemText(i, 4, cb); //添加到list Control 中的第i行的第五列下
i += 1; //下次循环指向第2行
m_pRecordset->MoveNext(); //移动到下一个记录
}
关闭连接
m_pRecordset->Close(); //关闭记录集指针
m_pConnection->Close(); //关闭数据库连接
m_pRecordset = NULL;
m_pConnection = NULL;
::CoUninitialize(); //收回COM
运行程序
[1]: https://blog.csdn.net/qq_31209383/article/details/51198595
ADO操作m_pConnection->Open和m_pRecordset->Open ↩︎