您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > MFC-ODBC连接数据库
本案例通过VS2010环境下的MFCODBC使用者连接SQLServer数据库因为是通过ODBC数据源连接的,在此我认为关于SQLServer的版本是无关紧要的。数据库准备:--先要手动创建一个数据库,名字叫studentdb--创建好了数据库studentdb就可以执行下面的sql语句了--这些语句执行完了以后,会在studentdb中建一个student表,然后插入四条数据usestudentdb;createtablestudent(snovarchar(10),snamevarchar(10)notnull,sageintnotnull,pwdvarchar(10)notnull);insertintostudent(sno,sname,sage,pwd)values('0001','jack',20,'7777');insertintostudent(sno,sname,sage,pwd)values('0102','tom',20,'8888');insertintostudent(sno,sname,sage,pwd)values('3472','cat',20,'9999');insertintostudent(sno,sname,sage,pwd)values('5716','dog',20,'2013');--数据库建表工作就到这里这么顺利的完成了启动VS2010,新建一个MFC项目。名称叫summer。通过MFC应用程序向导进行项目设置。下一步应用程序类型选择基于对话框主框架样式都不要了。全部取消勾选。进入下一步高级功能就默认,进入下一步生成的类选CsummerDlg点击完成,就完成了MFC应用项目的创建。完成以后要等很久,VS2010最底下显示“正在分析包含的文件……”,第一次新建项目要等很久,第二次也要等一段时间。一切就绪以后,会看到对话框面板设计。把默认建立的控件都删了。像“TODO:在此放置对话框控件。”、“确定”、“取消”按钮,都删了。我们不要那些。删光了之后,面对光秃秃的对话框面板我们开始设计,控件都在屏幕左边的工具箱。要是运气不好,左边都没有工具箱显示,那就在视图(v)菜单中找吧。控件设计。在此用到了三种控件,分别是Editcontrol、StaticText、Button。多个控件对齐小技巧:比如选中4个Static文本控件,按下ctrl+shift+方向键左或右,它们就对齐了。控件放好了,开始修改控件caption。点击一个控件,能够在左边“外观”一栏修改Caption。界面显示的设计都基本完成。结下来要新建一个ODBC类。右击项目名称,选择添加→类→MFCODBC使用者通过MFCODBC使用者向导进行数据源的配置。在这里点击“数据源”选择机器数据源,因为还没有我们需要的数据源,所以点击“新建”下一步数据源驱动程序选择SQLServer下一步数据源新建完成。取个名字叫autumn,服务器下拉,选择(local)下一步下一步更改默认的数据库为一开始新建的studentdb下一步完成测试数据源一般不会有问题确定这时候机器数据源下就有了我们刚创建的autumn,选择autumn,确定确定选择我们之前建好的student表。根据我目前的经验,一张表对应一个ODBC使用者类。如果要用到很多表,那么就要创建很多ODBC使用者类。此时生成了一个对应那张student表的MFCODBC使用类,这个类名叫Cstudent。MFCODBC使用者创建完成。点击完成以后,会跳出一个安全警告。不理他。新建完了以后ODBC使用者类,VS2010替我们生成了这么多代码,此时按下F7进行编译,会出错,双击错误,跳转到出错代码,是一个安全问题,我们把出错的这一行注释掉,再按F7编译就没有问题了。打开summer.h,在其中声明一个CDatabase类型的成员变量m_database打开summerDlg.cpp,新包含student.h这个头文件,这样一来就直接使用Cstudent这个ODBC使用者类了。在对话框设计面板,右击第一个EditControl控件,选择“添加变量”如果找不到控件面板设计界面,就在视图→资源视图→Dialog找到之。项目代码的管理则是在解决方案管理器中(默认在左边显示),左下方可以切换。类别选择Value型,变量名填c_sno。其实按照规范,这里的变量名应当是m_sno,但是为了不与ODBC使用者里面的m_sno混淆,我还是写c_sno。表示是编辑控件(IDC_EDIT1)的成员变量。类似的,剩下三个编辑框控件(EditControl),都通过这样的方式新建成员变量,变量类别都是Value。变量名分别是c_sname,c_sage,c_pwd。打开summerDlg.h这个头文件。可以看到之前添加的控件成员变量都在这里出现了。需要指出的是:如果是直接手动在这里声明变量,那么效果比起上一步操作中通过添加控件的成员变量的效果是不一样的。我的理解就是控件的成员变量是和控件绑定的,是属于控件的,而手动声明的变量仅仅是类的成员变量,并没有和控件一一对应起来。这里我们还需要手动声明三个成员变量,见图片红框中,至于为什么要声明他们,最好的解释就是因为后面要用。不声明就没法用啊。至于最下面的那些afx_msgvoidOnBnClickedButton1();也许这时候你的summerDlg.h里面还没出现,如果你有点经验的话应该知道这些函数也是自动生成的——当你双击一个设计好的按钮。打开summerDlg.cpp,找到图片中那个方法的实现部分。添加红框中的代码。这里一共添加了三段代码。第一段是个格式化,第二段和第三段是固定写法。我目前也解释不清楚。其中sql和my都是在summerDlg.h这个头文件中声明过的变量,而m_database是summer.h中手动声明的变量,那个CsummerApp也能在summer.h中找到。双击“上一条”按钮开始写代码。双击“下一条”按钮,写代码。“上一条”和“下一条”按钮代码完成以后,按F5编译运行,就能够看到效果了。“查找”按钮的代码。这里的查找功能实现了通过学号查找其他信息。“添加”按钮的代码。如果要做成修改功能,把AddNew()改成Edit()即可。“删除”按钮对应的代码。按下F5编译运行。即可查看所有功能效果。在此解释一下,UpdateData(TURE)的功能就是获取编辑控件上输入的数据,这些数据在UpdateData(TURE)之后都被赋值给对应的控件成员变量。相应的,UpdateData(FALSE)就是把这些变量在编辑控件中显示。至此,通过VS2010的MFCODBC使用者连接SQLServer,实现增、删、改、查的操作案例也告一段落了。作者:一里荔枝
本文标题:MFC-ODBC连接数据库
链接地址:https://www.777doc.com/doc-1800657 .html