您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > SQL C++实现过程详解
VisualStudioC++数据库编程实现过程详解~1~许文俊龚萍编制数据库实验三实现过程详解 MFC提供了对数据库程序设计的强大支持。对于数据库的访问,MFC提供了两组类:ODBC(OpenDatabaseConnectivity)和ADO(ActiveXDataObjects)。利用这两组功能强大的类,用户可以方便的开发出基于ODBC或ADO的数据库应用。本实验主要是通过MFC对前两次实验中所建数据库表的一些基本操作。此处举的例子是对数据库中student表的操作,该表中包含student的一些基本信息,如学号、姓名、性别、年龄。而基本操作包括添加、查找、修改以及删除。同学们也可自己进行扩展,比如增加学生信息以及增加一些对表的操作。1ODBC基础本部分主要介绍MFC的一组类ODBC。ODBC是微软公司开放式服务结构中有关数据库的已组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API。这些API函数利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持。所谓的ODBC是利用微软提供的驱动程序来连接用户程序和数据库管理系统。一个基于ODBC的应用程序读数据库的操作不依赖任何DBMS,也就是说利用ODBC封装了对数据库管理系统的各种操作。应用程序只要对ODBC进行操作,然后ODBC进行数据库管理系统的操作。在ODBC应用程序中,应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,建立起ODBC与具体数据库的联系。只有在建立了连接之后才可以进行对数据源的操作,进而操作数据库。下面是注册数据源的一般操作:1)建立数据库;2)在WindowsXP环境下打开“控制面板”,单击“管理工具”图标,如下图。图1管理工具选项3)双击“数据源”图标,弹出ODBC数据源管理器对话框,如下图。VisualStudioC++数据库编程实现过程详解~2~许文俊龚萍编制图2ODBC数据与管理器对话框4)在“ODBC数据源管理器”对话框中,单击“添加”按钮,弹出创建新数据源对话框,此处选择SQLSERVER为数据源驱动程序,如下图。图3创建新数据源对话框5)单击“完成”按钮后,弹出创建到SQLSERVER的新的数据源。如下图。VisualStudioC++数据库编程实现过程详解~3~许文俊龚萍编制图4创建到SQLSERVER的新数据源对话框6)在创建到SQLServer的新数据源对话框中按要求填写,如服务器,填写你机器上实际的数据库服务器名,单击下一步,接下来差不多都按默认的或说明填写即可,如下列图所示。图5选择登录方式VisualStudioC++数据库编程实现过程详解~4~许文俊龚萍编制图6设置默认数据库图7配置数据库显示及安全相关选项VisualStudioC++数据库编程实现过程详解~5~许文俊龚萍编制图8最终查看ODBC数据源管理器2ODBC数据库编程在ODBC驱动程序支持下,应用程序对数据库的访问可以方便的利用ODBC类来进行。MFC的ODBC类对较复杂的ODBCAPI函数进行了封装,提供了简化的调用接口,从而大大方便了数据库应用程序的开发。MFC的ODBC类主要包括Cdatabase类、Crecordset类、CrecordView类、CfieldExchange类、CDBException类。下面利用前面连接好的数据源,进行编程,包括两方面:API接口函数的编程以及SQL语句的编程。2.1创建单文档应用程序1)启动VisualC++6.0,选择File|New,弹出New对话框,选择Projects标签,然后再列表中选中选择MFCAppWizard[exe]选项,在“Projectname”文本框中输入工程文件名(根据需要自己确定),在“Location”中指定应用文件创建的位置,如下图所示:VisualStudioC++数据库编程实现过程详解~6~许文俊龚萍编制图9创建MFCAppWizard应用程序2)单击OK,弹出对话框MFCAppWizard-Step1,如下图所示,选择Singledocument单选按钮,单击Whatlanguagewouldyoulikeyourresoursesin?下拉列表框的下三角按钮,选择【中国】APPWZCHS.DLL选项。图10应用程序类型以及语言选择VisualStudioC++数据库编程实现过程详解~7~许文俊龚萍编制3)单击NEXT,弹出MFCAppWizard-Step2,选择Databaseviewwithoutfilesupport单选按钮,如下图所示:图11选择数据库支持种类4)单击DataSource按钮,弹出DatabaseOptions对话框如下图所示,在ODBC的下拉列表中选择之前的数据源。VisualStudioC++数据库编程实现过程详解~8~许文俊龚萍编制图12数据源选择5)单击OK,弹出SelectDatabaseTables对话框,如下图所示,选择自己要链接的表(可以选一张,也可多选)。图13数据库中表的选择6)单击OK,单击Next按钮,这一步中选择文档类型为容器类型,如下图所示。VisualStudioC++数据库编程实现过程详解~9~许文俊龚萍编制图14文档类型选择7)单击Next,之后都是默认,单击Finish完成。到此初步的工程已经建好,下面进行界面的设计。2.2新建界面按钮本部分中,只是编写一个简单的界面,同学们可以根据自己所建数据库的需要来作出适当的修改。在项目工作窗口中选择ResourceView页面,双击Menu中的IDD_LIANXI2_FORM,则弹出文档模板和控件工具栏,如下图所示的界面:VisualStudioC++数据库编程实现过程详解~10~许文俊龚萍编制图15主界面对于文档模板,单击右键,选择Properties,改变界面的风格。如果没有弹出控件工具栏,则在工具栏的右边空白处单击右键,选择Controls,如下图所示,将鼠标在控件上停留一会,就会出现该控件的名称。图16调出控件工具栏在文档模板上添加所需的控件,这里添加了五个Editbox控件和四个Button,和若干StaticText。这里具体描述一下控件的简单用法:VisualStudioC++数据库编程实现过程详解~11~许文俊龚萍编制控件的选取:可以用鼠标直接选取。首先选中所要的控件,比如StaticText,然后移动鼠标指针至文档模板上即可。控件属性的修改:右键单击文档模板面上的控件,选择Properties,单击左键,弹出TextProperties对话框,如下图所示为StaticText的属性:图17StaticText控件的属性General标签中的ID为控件的编号,Caption中可填写标题。在本例子中,可将Caption分别改为“学号”、“性别”等标题。而Styles标签可以选择控件的风格,根据需要可以美化界面,不做介绍。这里将五个Editbox的ID分别改为IDC_ID_EDIT、IDC_SEX_EDIT、IDC_NAME_EDIT、IDC_AGE_EDIT、IDC_CHECKNAME。如下图所示:图18编辑框控件ID的更改将四个按钮改的ID改为IDC_ADD、IDC_MODI、IDC_DEL、IDC_CHECK,如下图所示来修改。VisualStudioC++数据库编程实现过程详解~12~许文俊龚萍编制图19按钮控件ID的更改调整各个控件的位置,如下图所示:图20控件布局示意添加新类CRecordsetAdd:在工具栏上选择Insert|NewClass,添加一个新类CRecordsetADD,如下图所示:VisualStudioC++数据库编程实现过程详解~13~许文俊龚萍编制图21添加新类选项单击OK,弹出DatabaseOptions对话框,如图所示,同样的选择数据源后,单击OK按钮,弹出SelectDatabaseTables对话框,选择表,单击OK。VisualStudioC++数据库编程实现过程详解~14~许文俊龚萍编制图22数据源中表的选择在CRecordsetAdd中添加四个成员变量如下所示:CStringm_Sno;CStringm_Sname;CStringm_Sage;CStringm_Sdept;同时其成员函数DoFieldExchange如下:voidCRecordsetAdd::DoFieldExchange(CFieldExchange*pFX){//{{AFX_FIELD_MAP(CRecordsetAdd)pFX-SetFieldType(CFieldExchange::outputColumn);RFX_Text(pFX,_T([Sno]),m_Sno);RFX_Text(pFX,_T([Sname]),m_Sname);RFX_Int(pFX,_T([Sage]),m_Sage);RFX_Text(pFX,_T([Sdept]),m_Sdept);//}}AFX_FIELD_MAP}即采用了RFX机制实现了数据的交换。在CLianxi2View::DoDataExchange()函数中添加代码如下所示:voidCLianxi2View::DoDataExchange(CDataExchange*pDX){CRecordView::DoDataExchange(pDX);VisualStudioC++数据库编程实现过程详解~15~许文俊龚萍编制//{{AFX_DATA_MAP(CLianxi2View)DDX_Text(pDX,IDC_EDID_QUERY,m_strQuery);DDX_Text(pDX,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}这样就实现了数据的显示问题。“添加”的实现:为了添加记录,添加一个对话框资源:在项目工作去窗口中选择ResourceView页面,右键单击Dialog选择InsertDialog,则添加了一个对话框,如下图所示:图23插入新对话框为其添加四个Editbox,其ID分别为IDC_ID、IDC_NAME、IDC_SEX、IDC_AGE。同时按照前面所描述的方法为该对话框添加类CAddNew,如下图所示:VisualStudioC++数据库编程实现过程详解~16~许文俊龚萍编制图24子对话框添加控件单击View|MFCClassWizard,在Project中选择lianxi2,在Classname中选择CAddNew,则在下面的界面中显示对话框中的界面,选中IDC_AGE,单击AddVariable,弹出如图的对话框,添加变量的名称,选择其类型。图25为控件添加成员变量同样,为其他控件添加变量,最后结果如图所示:VisualStudioC++数据库编程实现过程详解~17~许文俊龚萍编制图26控件与成员变量对应关系图2.3编写按钮成员函数2.3.1数据添加在主对话框中,即在ResourceView页面中,双击IDD_LIANXI2_FORM,出现已经设计好的主对话框后,双击添加按钮,出现对话框如下:图 27 添加成员函数 单击OK,为其添加函数如下所示:voidCStuView::OnAdd(){//TODO:Addyourcontrolnotificationhandlercodehere//CDatabasedb;//db.Open(NULL,FALSE,FALSE,ODBC;DSN=HrMan);CADDNEWdlg;CStringstr;if(IDOK==dlg.DoModal()){t
本文标题:SQL C++实现过程详解
链接地址:https://www.777doc.com/doc-3362170 .html