1、源的操作,进而操作数据库。下面是注册数据源的操作:打开ODBC数据库管理器在“ODBC 数据源管理器”对话框中,单击“添加”按钮,弹出创建新数据源对话框,此处选择SQL SERVER 为数据源驱动程序,如下图。单击“完成”按钮后,弹出创建到 SQL SERVER 的新的数据源。如下图。成功建立数据源以2. 创建单文档应用程序1) 启动 Visual C+6.0,选择File|New,弹出New 对话框,选择Projects 标签,然后再列表中选中选择MFC App Wizardexe选项,在“Project name”文本框中输入工程文件名(根据需要自己确定),在“Location”中指定应用
2、文件创建的位置,如下图所示:单击确定,选择单文档点击数据源,按钮,弹出Database Options 对话框如下图所示,在ODBC 的下拉列表中选择学生信息数据源。单击 OK,弹出Select Database Tables 对话框,如下图所示,选择自己要链接的表S。单击 OK,单击Next 按钮,这一步中选择文档类型为容器类型,如下图所示。单击 Next,之后都是默认,单击Finish 完成。到此初步的工程已经建好,下面进行界面的设计。3新建界面按钮在项目工作窗口中选择 ResourceView 页面,双击Menu 中的IDD_LIANXI2_FORM, 弹出文档模板和控件工具栏,构建界面
3、如下图:将学生信息系统部分的Edit box 的ID 分别改为IDC_ID_EDIT、IDC_NAME_EDIT、IDC_AGE_EDIT、IDC_DEPT_EDIT、IDC_CHECKNAME。将按钮改为 ID 改为IDC_ADD、IDC_MODI、IDC_DEL 、IDC_CHECK4添加新类 CRecordsetAdd:在工具栏上选择Insert|New Class,添加一个新类CRecordsetAdd,如下图所示:单击 OK,弹出Database Options 对话框,如图所示,同样的选择数据源“学生信息”后,单击OK按钮,弹出Select Database Tables 对话框,
4、选择表S,单击OK5数据的显示在 CRecordsetAdd 中添加四个成员变量如下所示:CString m_Sno;CString m_Sname;CString m_Sage;CString m_Sdept;同时其成员函数DoFieldExchange 如下:void CRecordsetAdd:DoFieldExchange(CFieldExchange* pFX)/AFX_FIELD_MAP(CRecordsetAdd)pFX-SetFieldType(CFieldExchange:outputColumn);RFX_Text(pFX, _T(Sno), m_Sno);Sname),
5、m_Sname);RFX_Int(pFX, _T(Sage), m_Sage);Sdept), m_Sdept);/AFX_FIELD_MAP即采用了RFX 机制实现了数据的交换。在 CLianxi2View:DoDataExchange()函数中添加代码如下所示:void CLianxi2View:DoDataExchange(CDataExchange* pDX)CRecordView:DoDataExchange(pDX);/AFX_DATA_MAP(CLianxi2View)DDX_Text(pDX, IDC_EDID_QUERY, m_strQuery);DDX_Text(pDX,
6、IDC_SQL_EDIT, m_sql);DDX_FieldText(pDX, IDC_EDIT1, m_pSet-m_Sno, m_pSet);DDX_FieldText(pDX, IDC_EDIT2, m_pSet-m_Sname, m_pSet);DDX_FieldText(pDX, IDC_EDIT4, m_pSet-m_Sdept, m_pSet);DDX_FieldText(pDX, IDC_EDIT3, m_pSet-m_Sage, m_pSet);/AFX_DATA_MAP这样就实现了数据的显示问题。点击界面上的红色圆圈里的翻页按钮,可以逐个查看记录或查看第一页、最后页的记录:
7、。6“添加”的实现:为了添加记录,添加一个对话框资源:在项目工作去窗口中选择 ResourceView 页面,右键单击Dialog 选择插入Dialog,则添加了一个对话框,为其添加四个 Edit box,其ID 分别为IDC_ID、IDC_NAME、IDC_AGE、IDC_DEPT。同时按照前面所描述的方法为该对话框添加类CAddNew,如下图所示:单击 View|MFC ClassWizard,在Project 中选择lianxi2,在Class name 中选择CAddNew,则在下面的界面中显示对话框中的界面,选中IDC_AGE,单击Add Variable,弹出如图的对话框,添加变量
8、的名称,选择其类型。7实现添加功能的函数在主对话框中,即在 ResourceView 页面中,双击IDD_LIANXI2_FORM,出现已经设计好的主对话框后,双击添加按钮,出现对话框如下:单击OK,为其添加函数如下所示:OnAdd() / TODO: Add your control notification handler code here UpdateData(); CAddNew dlg; CString str; CString str1; CDatabase db; if (IDOK=dlg.DoModal() try str1.Format(INSERT INTO S(Sno,
9、Sname,Sage,Sdept) values(%s,),dlg.m_id,dlg.m_name,dlg.m_age,dlg.m_dept); db.Open(学生信息); db.ExecuteSQL(str1); catch(CDBException *e) AfxMessageBox(e-m_strError); return; str.Format(添加%s成功!,dlg.m_name); MessageBox(str,NULL,MB_OK|MB_ICONINFORMATION); m_pSet-m_Sno = dlg.m_id ;m_Sname = dlg.m_name;m_Sage
10、 =dlg.m_age;m_Sdept = dlg.m_dept; UpdateData(FALSE); 执行结果:点击添加按钮,弹出对话框,填写信息如下:点击确定按钮,被添加的记录在界面上成功显示8实现删除功能的函数OnDel() / CAddNew dlg; CRecordsetAdd m_pdatabase; if (m_pdatabase.IsOpen() m_pdatabase.Close();删除记录%s成功!,m_pSet-m_Sname); m_pdatabase.Open(CRecordset:snapshot,NULL,CRecordset:none); CRecordse
11、tStatus status; /clGetStatus(status); /cl m_pdatabase.Delete(); if (!m_pdatabase.IsEOF() m_pdatabase.MoveLast(); else m_pdatabase.SetFieldNull(NULL);Requery(); catch (CDBException* e)执行结果如下:删除成功,界面显示其他记录。9实现修改功能的函数OnModi() UPDATE S SET Sname=,Sage=,Sdept= WHERE Sno=,dlg.m_name,dlg.m_age,dlg.m_dept,d
12、lg.m_id);修改%s成功!; 修改前点击修改按钮,弹出对话框,填写信息修改结果:10为查询添加函数OnCheck() m_checkname.TrimLeft(); if (m_checkname.IsEmpty() MessageBox(要查询的学号不能为空! CRecordset recset(&db); CString strSQL; strSQL.Format(SELECT * FROM S WHERE Sno=,m_checkname); /执行的SQL 语句 /打开查询结果集 recset.Open(CRecordset:forwardOnly,strSQL,CRecords
13、et:readOnly); if(recset.IsEOF() /查询结果集为空没有查到你要找的学生记录! MessageBox(查询成功! CString temp1,temp2,temp4; CString temp3; recset.GetFieldValue(Sno,temp1);Sname,temp2);Sage,temp3);Sdept,temp4); /(int)(LPCTSTR)m_Sno = temp1 ;m_Sname = temp2;m_Sage =temp3;m_Sdept = temp4;m_pSet-IsEOF() recset.Close();输入查询信息:点击主
14、键查询后:11数据库记录显示在MainFrm.cpp中,将indicators数组修改成如下代码:static UINT indicators = ID_SEPARATOR, ID_SEPARATOR,/ status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL,;在MainFrm.h中,将m_wndStatusBar改为public:public: / control bar embedded members CStatusBar m_wndStatusBar; CToolBar m_wndToo
15、lBar;在“建立类向导”中,选中OnCommand,点击Add Function如下图:在该函数中添加代码:BOOL CLianxi2View:OnCommand(WPARAM wParam, LPARAM lParam) Add your specialized code here and/or call the base class CMainFrame *pFrame=(CMainFrame*)AfxGetApp()-m_pMainWnd; CStatusBar*pStatus=&pFrame-m_wndStatusBar; if (pStatus) CRecordsetStatus
16、rStatus;GetStatus(rStatus); 当前记录: %d/ 总记录:%d,1+rStatus.m_lCurrentRecord,m_pSet-GetRecordCount(); pStatus-SetPaneText(1,str); return CRecordView:OnCommand(wParam, lParam);执行结果如图红色部分:12新建表。添加按钮”新建表”,ID改为IDC_CreateTalbebutton1,函数如下:OnCreateTalbebutton1() /if (!SQLConfigDataSource(NULL,ODBC_ADD_DSN,SQL
17、Server,DSN=学生信息); try db.ExecuteSQL(CREATE TABLE TEACHERS (TeacherID CHAR(4),TeacherName CHAR(10),Course CHAR(10)新建表成功!点击按钮前,数据库中的表如下图:点击新建表按钮:打开数据库进行查看:13删除表添加按钮“删除表”,ID改为IDC_DelNewtalbeButton。函数代码如下:OnDelNewtalbeButton() DROP TABLE TEACHERS m_xiugaiflag=0;删除表成功!数据库中已没有TEACHERS表14添加数据添加了一个对话框,为其添加三
18、个 Edit box,其ID 分别为IDC_TeacherID、IDC_TeacherName、IDC_Course。在类向导里为其添加cstring类型的变量m_teacherid,m_teachername, m_Course.为其建立类CSHUJUNew,该类继承自类Cdialog。再添加一个对话框,为其添加四个 Edit box,其ID 分别为IDC_TeacherID、IDC_TeacherName、IDC_Course、IDC_TeacherAge。在类向导里为其添加cstring类型的变量m_teacherid,m_teachername, m_Course,m_teachera
19、ge.为其建立类CSHUJUNew2, 该类继承自类Cdialog。设置一个xiugaiflag标志,当表被修改时,xiugaiflag标志置为1。否则,置为0。当xiugaiflag=0时调用教师信息表1,xiugaiflag=1时调用教师信息表2添加按钮“添加数据”,ID改为IDC_AddNewtableButton。OnAddNewtableButton() CSHUJUNew dlg; CSHUJUNew2 dlg2; if(m_xiugaiflag=0) if (IDOK=dlg.DoModal() str1.Format(INSERT INTO TEACHERS(TeacherID
20、,TeacherName,Course) VALUES(,dlg.m_teacherid,dlg.m_teachername,dlg.m_Course); catch ( CDBException* e) e-ReportError();添加数据成功! else if(m_xiugaiflag=1) if (IDOK=dlg2.DoModal()INSERT INTO TEACHERS(TeacherID,TeacherName,Course,TeacherAge) VALUES(,dlg2.m_teacherid,dlg2.m_teachername,dlg2.m_Course,dlg2.m_teacherage);点击添加数据按钮,填写教师信息表点击确定,查看数据库点击修改表后,再点击添加数据按钮,查看数据库15修改表添加按钮“修改表”,ID修改为IDC_ModButton,否则,置为0OnModButton() Add your control
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1