工控编程吧
标题:
281上位机VC MFC使用DAO获取数据库属性信息
[打印本页]
作者:
qq263946146
时间:
2016-9-26 22:00
标题:
281上位机VC MFC使用DAO获取数据库属性信息
(, 下载次数: 0)
上传
点击文件名下载附件
DAO获取数据库属性信息
功能展示
在操作数据库文件时,有时会需要获取数据库的属性信息,我们当前例程实现获取指定数据文件的属性信息,点击浏览数据库可以选择指定的数据库文件,获取其属性,效果如图;
要点提示
数据库文件属性的获取可以通过CDaoDatabase中成员变量m_pWorkspace的内部函数,也就是CDaoWorkspace类的成员函数GetDatabaseInfo()实现;
函数有三个参数,第二参数为CDaoDatabaseInfo类型,包含我们想我在一些信息;
实现功能
1.新建基于对话框的应用程序
2.在例程的头文件stdafx.h中包含数据库支持的头文件#include <afxdao.h>
3.依照例程界面,添加树状控件,列表控件,按钮控件,ID分别为IDC_TREE1,IDC_LIST1,IDC_BROWSE
4.给主对话框添加两变量及一成员函数public:CDaoRecordset m_set;CDaoDatabase m_Db;
void ShowDbInfo();
void CGkbc8Dlg::ShowDbInfo()
{
CListCtrl *pListCtl = (CListCtrl *)GetDlgItem(IDC_LIST1);
pListCtl->SetRedraw(FALSE);
pListCtl->DeleteAllItems();//删除原有项目
while( pListCtl->DeleteColumn(0));
CDaoDatabaseInfo di;
m_Db.m_pWorkspace->GetDatabaseInfo(0,di);
//添加列
LV_COLUMN lc;
lc.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lc.fmt=LVCFMT_CENTER;
lc.cx=150;
lc.iSubItem=0;
lc.pszText="项目名称";
pListCtl->InsertColumn(0,&lc);
lc.pszText="属性";
pListCtl->InsertColumn(1,&lc);
//添加各行
LVITEM Item;
CString Info;
Item.mask=LVIF_TEXT;
Item.iSubItem=0;
Item.iItem=0;
Item.pszText=_T("数据库名称:");
pListCtl->InsertItem(&Item);
Item.iItem=1;
Item.pszText=_T("是否可写:");
pListCtl->InsertItem(&Item);
Item.iItem=2;
Item.pszText=_T("是否允许事务处理:");
pListCtl->InsertItem(&Item);
//设置各个子项
Info=di.m_strName;
pListCtl->SetItemText(0,1,Info);
if(di.m_bUpdatable)
Info="可写";
else
Info="只读";
pListCtl->SetItemText(1,1,Info);
if(di.m_bTransactions)
Info="允许";
else
Info="不允许";
pListCtl->SetItemText(2,1,Info);
pListCtl->SetRedraw();
pListCtl->Invalidate();
}
5.关联按钮<浏览数据库>的点击响应函数
void CGkbc8Dlg::OnBrowse()
{
CTreeCtrl *pTreeCtl = (CTreeCtrl *)GetDlgItem(IDC_TREE1);
CListCtrl *pListCtl = (CListCtrl *)GetDlgItem(IDC_LIST1);
CFileDialog fd(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"Microsoft Access Database(*.mdb)|*.mdb|All Files(*.*)|*.*||");
if(fd.DoModal()==IDOK)
{
try
{
m_Db.Open(fd.GetPathName());
pTreeCtl->InsertItem(m_Db.GetName());
ShowDbInfo();
}
catch(CDaoException*e)
{
if(m_Db.IsOpen())
{
m_Db.Close();
}
pListCtl->DeleteAllItems();
while(pListCtl->DeleteColumn(0));
AfxMessageBox(e->m_pErrorInfo->m_strDescription,MB_ICONEXCLAMATION);
e->Delete();
return;
}
}
}
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/8eadf8c14cfcf59f72cbfa78585f60fd/0/0/w_19rsttkyxh.swf-albumId=6397319609-tvId=6397319609-isPurchase=0-cnId=27[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件 [weixinlianxi]1[/weixinlianxi]
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4