如果不勾选 “基于对话框”,那么可以通过左侧的“数据库支持”,选择ODBC数据源。如果勾选“基于对话框”,左侧的“数据库支持”
将变灰,无法设置。
所以我们不用这里的向导完成,我们先生成一个对话框项目。
点开----“项目”----“类向导”
点开右上方“添加类”里面的“MFC OBDC使用者”,出现下面的对话框
即可设置数据源,选择“动态集”,如果选择“快照”后期无法像数据库添加数据。
在数据源内选择好你的数据源,还有数据源的文件,比如Access文件xxx.mdb,选择好需要的数据表,就会生成和数据表同名的类文件。如下图:
“noto.cpp”里面如果出现
直接注释掉即可。
下面我们通过加载一个List Control控件测试一下这个数据库,首先添加一个控件,并设置View属性“Report”。
然后为控件添加一个公共变量名:m_list_db
在对话框的初始化代码处添加一下代码,这样对话框初始化后列表就有项目名称了。
下面就是读取数据库,添加前面生成的头文件
Cnote m_pSet;
CDBVariant varvalue;
m_pSet.Open();
m_pSet.MoveFirst();
int i = 0;
TCHAR buf[20];
while (!m_pSet.IsEOF())
{
m_pSet.GetFieldValue(short(0), varvalue);
_stprintf_s(buf, _T("%d"), varvalue.m_lVal);
m_list_db.InsertItem(i, buf);
m_pSet.GetFieldValue(1, varvalue);
m_list_db.SetItemText(i, 1, varvalue.m_pstringW->GetBuffer(1));
m_pSet.GetFieldValue(2, varvalue);
_stprintf_s(buf, _T("%d"), varvalue.m_lVal);
m_list_db.SetItemText(i, 2, buf);
m_pSet.GetFieldValue(3, varvalue);
_stprintf_s(buf, _T("%f"), varvalue.m_fltVal);
m_list_db.SetItemText(i, 3, buf);
m_pSet.GetFieldValue(4, varvalue);
_stprintf_s(buf, _T("%f"), varvalue.m_fltVal);
m_list_db.SetItemText(i, 4, buf);
m_pSet.GetFieldValue(5, varvalue);
_stprintf_s(buf, _T("%f"), varvalue.m_fltVal);
m_list_db.SetItemText(i, 5, buf);
m_pSet.MoveNext();
i++;
}
m_pSet.Close();
在对话框的初始化代码处继续添加上一段代码
运行结果如下: