VisualStudioC++数据库编程实现过程详解~13~王思野编制
}
CRecordView::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDatabaseGUIView)
DDX_Text(pDX, IDC_CHECKNAME, m_checkname);
DDX_FieldText(pDX, IDC_ID_EDIT, m_pSet->m_SNO, m_pSet);
DDX_FieldText(pDX, IDC_NAME_EDIT, m_pSet->m_SNAME, m_pSet); DDX_FieldText(pDX, IDC_DEPT_EDIT, m_pSet->m_SDEPT, m_pSet); DDX_FieldText(pDX, IDC_AGE_EDIT, m_pSet->m_SAGE, m_pSet); // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP
这样就实现了数据的显示问题。
“添加”的实现:为了添加记录,添加一个对话框资源:
在项目工作区窗口中选择ResourceView页面,右键单击Dialog→Insert Dialog,则添加了一个对话框,为其添加四个Edit box,其 ID 分别为 IDC_ID、IDC_NAME、IDC_AGE、IDC_DEPT。
图24子对话框添加控件
同时按照前面所描述的方法为该对话框添加类CAddNew,如下图所示:
图25 添加新类选项
单击 View→MFC ClassWizard,在 Class name 中选择CAddNew,则在下面的界面中显示对话框中的界面,选中IDC_AGE,单击 Add Variable,弹出如图的对话框,添加变量的名称,选择其类型。
VisualStudioC++数据库编程实现过程详解~14~王思野编制
图26 为控件添加成员变量
同样,为其他控件添加变量,最后结果如图所示:
图27 控件与成员变量对应关系图
2.3编写按钮成员函数 2.3.1 数据添加
在ResourceView页面Dialog中,双击IDD_DATABASEGUI_FORM,出现已经设计好的主对话框后,如双击删除按钮,出现对话框如下:
VisualStudioC++数据库编程实现过程详解~15~王思野编制
图28添加成员函数
void CDatabaseGUIView::OnAdd() {
// TODO: Add your control notification handler code here CAddNew dlg; CString str; CString str1; CDatabase db;
if (IDOK==dlg.DoModal()) { try { str1.Format(\values('%s','%s','%s','%s')\ db.Open(\学生信息\ db.ExecuteSQL(str1); } catch(CDBException *e) { AfxMessageBox(e->m_strError); return; } str.Format(\添加[%s]成功!\ MessageBox(str,NULL,MB_OK|MB_ICONINFORMATION); } }
2.3.2 数据删除
void CDatabaseGUIView::OnDel() {
// TODO: Add your control notification handler code here //
CAddNew dlg; CDatabase db; try { CString str1; CString str; if (m_pSet->IsOpen()) { m_pSet->Close(); } str.Format(\删除记录[%s]成功!\ str1.Format(\ db.Open(\学生信息\ db.ExecuteSQL(str1);
VisualStudioC++数据库编程实现过程详解~16~王思野编制
}
MessageBox(str,NULL,MB_OK|MB_ICONINFORMATION); // MessageBox(\}
catch (CDBException* e) { AfxMessageBox(e->m_strError); return; }
2.3.3 数据修改
注:由程序中的sql语句可以看出,使用的时候,修改是不能改学号的
void CDatabaseGUIView::OnMod() {
// TODO: Add your control notification handler code here CAddNew dlg; CString str; CString str1; CDatabase db;
if (IDOK==dlg.DoModal()) { try { if (m_pSet->IsOpen()) { m_pSet->Close(); } str1.Format(\StuInfo SET SNAME='%s',SAGE='%s',SDEPT='%s' WHERE SNO='%s'\ db.Open(\学生信息\ db.ExecuteSQL(str1); }
catch(CDBException *e) { AfxMessageBox(e->m_strError); return; }
str.Format(\修改[%s]成功!\
MessageBox(str,NULL,MB_OK|MB_ICONINFORMATION); } }
2.3.4 数据查询
void CDatabaseGUIView::OnCheck() {
// TODO: Add your control notification handler code here UpdateData(true); CDatabase db;
db.Open(\学生信息\ CString str;
m_checkname.TrimLeft(); if(m_checkname.IsEmpty()) { MessageBox(\要查询的学号不能为空! \

