QQ登录

只需一步,快速开始

282上位机VC MFC使用DAO执行SQL语句查询

[ 复制链接 ]

282上位机VC MFC使用DAO执行SQL语句查询

282上位机VC MFC使用DAO执行SQL语句查询

DAO执行SQL语句查询
功能展示
使用DAO技术进行程序开发时,有时得直接执行SQL语句功能, 我们当前例程演示使用DAO直接执行SQL语句功能,效果如图,点击<浏览数据库>打开指定的数据库文件例程会显示数据文件属性,在编辑框输入SQL语句点击<执行SQL>可直接执行SQL语句实现查询功能;

要点提示
我们当前例程有个比较关键的问题,就是数据库中ColeVariant类型变量与其他变量的转换,我们例程通过自己编写一个函数GetVariantString实现COleVariant转为Cstring的功能;

实现功能
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;
}
}
}
6.再添加一编辑框ID为IDC_EDIT1用于输入SQL指令用,添加一按钮按钮用于执行SQL指令,关联按钮的点击消息响应函数
void CGkbc8Dlg::OnButton1() //执行SQL
{
//select * from course order by id asc;
if(!m_Db.IsOpen())
{
AfxMessageBox("得首先打开一个数据库");
return;
}
CListCtrl *pListCtl = (CListCtrl *)GetDlgItem(IDC_LIST1);
CString sql;
int i;
CDaoQueryDef qd(&m_Db);
try
{
GetDlgItemText(IDC_EDIT1,sql);
sql.MakeUpper();
if(sql.Find("SELECT")!=-1)
{
if(m_set.IsOpen())
{
m_set.Close();
}
qd.Create(NULL,sql);
m_set.Open(&qd);

pListCtl->DeleteAllItems();//显示结果:
while(pListCtl->DeleteColumn(0));
pListCtl->SetRedraw(FALSE);

CDaoFieldInfo fi;
LV_COLUMN lc;
lc.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lc.fmt=LVCFMT_CENTER;
lc.cx=75;
lc.iSubItem=0;
for(i=0;i<m_set.GetFieldCount();i++)
{
m_set.GetFieldInfo(i,fi);
lc.pszText=fi.m_strName.GetBuffer(fi.m_strName.GetLength());
pListCtl->InsertColumn(i,&lc);
}
//添加各行
LVITEM Item;
CString str;
long nItem;
COleVariant var;
m_set.MoveFirst();
nItem=0;
while(!m_set.IsEOF())
{
Item.mask=LVIF_TEXT;
Item.iItem=i;
Item.iSubItem=0;
m_set.GetFieldValue(0,var);
str=GetVariantString(var);
Item.pszText=str.GetBuffer(str.GetLength());
pListCtl->InsertItem(&Item);
for(i=1;i<m_set.GetFieldCount();i++)
{
m_set.GetFieldValue(i,var);
str=GetVariantString(var);
pListCtl->SetItemText(nItem,i,str);
}

m_set.MoveNext();
nItem++;
}
m_set.Close();
qd.Close();
pListCtl->SetRedraw();
pListCtl->Invalidate();
}
else
{
qd.Create(NULL,sql);
qd.Execute();
}
}
catch(CDaoException*e)
{
AfxMessageBox(e->m_pErrorInfo->m_strDescription,MB_ICONEXCLAMATION);
e->Delete();
if(m_set.IsOpen())
{
m_set.Close();
}
if(qd.IsOpen())
{
qd.Close();
}
return;
}
}
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:282.上位机VC MFC使用DAO执行SQL语句查询.zip 
文件大小:148.8 KB  售价:11金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!




回复

使用道具 举报

快速回复 返回列表 客服中心 搜索