VC中用DAO实现树型控件的数据库访问
2009-06-08 20:07:55 来源:WEB开发网CDaoQueryDef类代表一个查询定义(Query definition),该定义可以被存储到数据库中。CDaoWorkspace提供了数据工作区(Workspace)。一个工作区可以包含几个数据库,工作区可以对所属的数据库进行全体或单独的事务处理,工作区也负责数据库的安全性。如果需要,程序可以打开多个工作区。
DAO的另一个重要特色在于它对Access数据库提供了强大的支持。由于DAO是基于Microsoft Jet引擎的,所以DAO肯定要在Access数据库上多作一些文章。例如,调用CDaoDatabase::Create()函数可以直接建立一个MDB文件,代码如下所示:
m_db.Create("C:\MYDIR\MYDB.MDB");
利用AppWizard和ClassWizard,用户可以方便地开发出性能优良的基于DAO的Access数据库应用程序。
上面介绍了关于DAO的一些基础知识,下面来说明本实例程序的实现思路。首先在视图类的OnInitialUpdate()函数中对树型控件初始化,初始化时先打开数据库中的表,找到第一条记录,将表中字段名为"省名"的内容插入到树型控件,然后移至下一条记录,进行循环操作至省数据表尾。程序代码如下:
void CPppView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
CPppDoc* pDoc = (CPppDoc*)GetDocument();
m_ShengSet=&pDoc->m_ShengSet;
TV_INSERTSTRUCT tvinsert;
tvinsert.hParent = NULL;
tvinsert.item.mask = TVIF_TEXT;
tvinsert.item.pszText = "全国";
HTREEITEM hDad = m_treectrl.InsertItem(&tvinsert);
if (m_ShengSet->IsOpen())
m_ShengSet->Close();
m_ShengSet->Open();
m_ShengSet->MoveFirst();
CString c1;
char buff[80];
while(!m_ShengSet->IsEOF())
{
c1=m_ShengSet->m_column1;
wsprintf(buff,"%s",c1);
tvinsert.item.pszText = buff;
tvinsert.hParent = hDad;
m_treectrl.InsertItem(&tvinsert);
m_ShengSet->MoveNext();
}
}
更多精彩
赞助商链接