首页 数据库 mysql教程 MFC中简单的数据库文件操作(添加,修改,查找,删除)

MFC中简单的数据库文件操作(添加,修改,查找,删除)

Jun 07, 2016 pm 02:59 PM
mfc 修改 删除 操作 数据库 文件 查找 添加 简单

要求:新建一个数据库文件(微软的 access ) , 里面包括学生的信息学号( ID ),姓名( Name ) , 英语成绩( English ) , 在 Visual C 6.0 里新建 MFC 项目,新建学生记录类( StudentRecordSet ) , 与数据库文件绑定。在 C 里面对文件里的信息进行添加

要求:新建一个数据库文件(微软的access,里面包括学生的信息学号(ID),姓名(Name,英语成绩(English,Visual C++ 6.0里新建MFC项目,新建学生记录类(StudentRecordSet,与数据库文件绑定。在C++里面对文件里的信息进行添加,查找,输出,删除操作。

1.       首先新建一个MFC项目,这里取名为data

 2.        在项目文件里,新建一个微软的access文件,取名为source

 

MFC中简单的数据库文件操作(添加,修改,查找,删除)

3.    打开source.mdb文件,点击使用设计器创建表,在表中字段名称 向下依次输入ID  Name  English ,前两个数据类型为文本,后一个数据类型为数字。选中ID的那一行,右键,设为主键(唯一的设为主键,比如一个班里的学生,每个人都有一个学号,各不相同,是唯一的)。关闭时提示是否保存对表1的修改,点击是,另存为 表名称 source 确定。

MFC中简单的数据库文件操作(添加,修改,查找,删除)

 

4.要把该数据文件设置为数据源。具体方法为打开电脑的控制面板,在里面找到管理工具,再找到数据源,双击打开,点击添加,选择Driver do Microsoft Access(* .mdb),在弹出的对话框中数据源名  source  ,数据库选择那里选择上面我们建立的数据库文件(source.mdb.

MFC中简单的数据库文件操作(添加,修改,查找,删除)

5.接下来对MFC项目进行操作。在类视图data classes右键,new class(添加类),Type  MFC Class.     Name: StudentRecordSet   Base class: CRecordset   OK。在弹出的对话框里ODBC选择source ,RecordsetType 选择Dynaset动态,OK,这样  StudentRecordSet类就和数据库文件绑定了。

MFC中简单的数据库文件操作(添加,修改,查找,删除)

     点击鼠标左键向 source.mdb 数据库文件中存数据。

1.CDataView右键添加消息句柄,选择OnLButtonDown,进入函数void CDataView::OnLButtonDown(UINT nFlags, CPoint point)中,在里面写入下面代码:

       StudentRecordSet rs; //建立对象

       rs.Open();   //打开数据库文件

       rs.AddNew();  //添加新数据

       rs.m_ID="001";  //第一条记录的ID

       rs.m_Name="Tom";

       rs.m_English=100;

       rs.Update(); //更新

       rs.Close(); //关闭文件

编译运行有错误。1class StudentRecordSet : public CRecordset 基类CRecordset不认识,双击StudentRecordSet类,添加头文件#include 2.View类中用到了StudentRecordSet rs; //建立对象 ,类StudentRecordSet不认识,双击CDataView,加入头文件,#include “StudentRecordSet.h”,编译成功。

MFC中简单的数据库文件操作(添加,修改,查找,删除)

MFC中简单的数据库文件操作(添加,修改,查找,删除)

2.运行,点击鼠标左键,界面无任何反应,实际上rs.m_ID="001"; rs.m_Name="Tom";rs.m_English=100;数据已经存储到文件source.mdb中了,打开文件,看看,已经添加进去了。

MFC中简单的数据库文件操作(添加,修改,查找,删除)

如果继续在刚才的运行窗口点击鼠标左键,出现错误。是因为又向文件中添加一条相同的记录,但是已经设 ID为主键了,唯一,不能重复添加。

MFC中简单的数据库文件操作(添加,修改,查找,删除)

3.     如果再向文件中添加一条新纪录,需要修改如下代码的值

StudentRecordSet rs; //建立对象

       rs.Open();   //打开数据库文件

       rs.AddNew();  //添加新数据

       rs.m_ID="001";  //第一条记录的ID     修改001

       rs.m_Name="Tom";                      修改Tom

       rs.m_English=100;                       修改100

       rs.Update(); //更新

       rs.Close(); //关闭文件

这里我把 001改为002    Tom改为 Jerry  100改为99,编译运行,鼠标左键,OK,到数据库文件 source.mdb中看一看,新纪录已经被添加了。PS:添加新纪录,也可以在文件中直接添加,不用再C++里面。

MFC中简单的数据库文件操作(添加,修改,查找,删除)

MFC中简单的数据库文件操作(添加,修改,查找,删除)

②点击鼠标右键,将数据库中的信息显示出来。

1.CDataView类右键添加消息句柄,选择OnRButtonDown,进入void CDataView::OnRButtonDown(UINT nFlags, CPoint point),添加下面代码:

       StudentRecordSet rs; //建立对象

       rs.Open();

       int y=20;  //控制y坐标的变化,换行

       CString strTemp;//临时变量

       CClientDC dc(this);//客户区

       while(!rs.IsEOF())  //判断是否到文件尾

       {

              strTemp.Format("ID:%s , Name:%s , English:%d",rs.m_ID,rs.m_Name,rs.m_English);//格式化

              dc.TextOut(20,y,strTemp);//dc调用函数textout显示出内容

              rs.MoveNext(); //指针默认在第一条记录,用这句话使指针下移

              y+=20;//换行

       }

       rs.Close();

MFC中简单的数据库文件操作(添加,修改,查找,删除)

OK,编译,运行,点击鼠标右键,数据库中的内容全部显示在面板上。(不要再点击鼠标左键,否则会出现上面提到的相同的错误,鼠标左键里的代码可以先注释掉)

MFC中简单的数据库文件操作(添加,修改,查找,删除)

③修改内容以及指定内容修改

1.修改内容是对第一条记录修改的,在鼠标左键里的函数里写下面代码:

                            rs.Close(); //关闭文件*/

                      StudentRecordSet rs;

                      rs.Open();

                      rs.Edit();

                      rs.m_English=60;

                      rs.Update();

                      rs.Close();

编译运行,先点击左键,再点击右键,发现第一条记录的英语成绩已经被修改成了60

MFC中简单的数据库文件操作(添加,修改,查找,删除)

MFC中简单的数据库文件操作(添加,修改,查找,删除)

2.指定内容修改把刚才加的代码注释掉,加入以下代码:

                   StudentRecordSet rs;

                   rs.m_strFilter="ID='002'";  //ID为主键,唯一,信息过滤,ID002的那一条记录,对它进行修改

                   rs.Open();

                   rs.Edit();

                   rs.m_English=80;//修改英语成绩

                   rs.Update();

                   rs.Close();

编译,运行,左键,右键,发现ID002的英语成绩已经被修改为了 80

MFC中简单的数据库文件操作(添加,修改,查找,删除)

 

MFC中简单的数据库文件操作(添加,修改,查找,删除)

④内容的查找

还是在鼠标左键的函数里,把刚才 修改 的代码注释掉,写下面代码:

                   StudentRecordSet rs;

                   rs.m_strFilter="English=80";   //这里的意思是 要查找英语成绩为80的所有记录

                   rs.Open();

                   CClientDC dc(this);

                   CString strTemp;

                   int y=20;

                   while(!rs.IsEOF())

                   {

                     strTemp.Format("ID:%s,Name:%s,English:%d",rs.m_ID,rs.m_Name,rs.m_English);

                     dc.TextOut(20,y,strTemp); //加入了显示功能,点击左键

                     rs.MoveNext();

                     y+=20; //换行

                   }

                   rs.Close();

OK,编译,运行,点击鼠标左键,发现英语成绩为80的记录被显示。因为数据库文件中只有两条记录,有一条记录英语的成绩为80,所以这里只显示一条记录。PS(查找不能加 rs.Update()函数,这个函数只跟在加入记录和修改记录后面);

MFC中简单的数据库文件操作(添加,修改,查找,删除)

 

 

 MFC中简单的数据库文件操作(添加,修改,查找,删除)

⑤内容的删除

这里指定内容删除就不说了,和指定内容修改差不多,把rs.Edit();换成rs.Delete();

下面是全部内容删除。

方法一:

1.把鼠标左键函数里刚才写的代码注释掉,加入下面代码:

                   StudentRecordSet rs;

                   rs.Open();

                   while(!rs.IsEOF())

                   {

                     rs.Delete();  //删除记录

                     rs.MoveNext();

                   }

                   rs.Close();

OK,编译,运行。左键。查看数据库文件.access

如下:

MFC中简单的数据库文件操作(添加,修改,查找,删除)

所有数据被删除。(这种方法,效率低,编程来删除文件数据,下面方法二是让数据库文件source.mdb来删除数据,效率高)

方法二:

1.把刚才方法一的代码注释掉。

加入以下代码:

CDatabase db;

                   StudentRecordSet rs(&db);

                   CString strSql="delete from source";

                   rs.Open();

                   db.ExecuteSQL(strSql);

                   rs.Close();

编译,运行,左键单击。OK达到与方法1同样的效果,文件里的数据全部删除

MFC中简单的数据库文件操作(添加,修改,查找,删除)

 

附上左键函数的代码:

void CDataView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default

/*	StudentRecordSet rs; //建立对象
	rs.Open();   //打开数据库文件
	rs.AddNew();  //添加新数据
	rs.m_ID="002";  //第一条记录的ID值
	rs.m_Name="Jerry";
	rs.m_English=99;
	rs.Update(); //更新
	rs.Close(); //关闭文件*/

/*	StudentRecordSet rs;
	rs.Open();
	rs.Edit();
	rs.m_English=60;
	rs.Update();
	rs.Close();*/  //修改内容

	/*StudentRecordSet rs;
	rs.m_strFilter="ID='002'";
	rs.Open();
	rs.Edit();
	rs.m_English=80;
	rs.Update();
	rs.Close();*/  //指定内容修改

	/*StudentRecordSet rs;
	rs.m_strFilter="English=80";
	rs.Open();
	CClientDC dc(this);
	CString strTemp;
	int y=20;
	while(!rs.IsEOF())
	{
		strTemp.Format("ID:%s , Name:%s , English:%d",rs.m_ID,rs.m_Name,rs.m_English);
		dc.TextOut(20,y,strTemp);
		rs.MoveNext();
		y+=20;
	}
	rs.Close();*/    //查找并显示


	/*StudentRecordSet rs;
	rs.Open();
	while(!rs.IsEOF())
	{
		rs.Delete();
		rs.MoveNext();
	}
	rs.Close();*/ //删除方法1

	CDatabase db;
	StudentRecordSet rs(&db);
	CString strSql="delete from source";
	rs.Open();
	db.ExecuteSQL(strSql);
	rs.Close(); //删除方法2
	CView::OnLButtonDown(nFlags, point);
}
登录后复制


 

 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

抖音聊天记录怎么彻底消除干净 抖音聊天记录怎么彻底消除干净 May 07, 2024 am 11:14 AM

1、打开抖音app,点击界面底部的【消息】,点击需要删除的聊天对话入口。2、长按任意一条聊天记录,点击【多选】,勾选想要删除的聊天记录。3、点击右下角的【删除】按钮,在弹出的窗口中选择【确认删除】即可将这些记录永久删除。

微信朋友圈怎么删除 微信朋友圈怎么删除 Apr 08, 2024 pm 03:25 PM

1、打开微信app,点击右下角的【我】,找到并点击【朋友圈】选项。2、点击右上角的【我的朋友圈】,在我的朋友圈界面找到想要删除的朋友圈内容。3、点击进入这条朋友圈的详情页,点击该条内容发布时间右侧的【小垃圾桶】图标。4、在弹出的窗口中选择【确定】即可,这样就完成了删除朋友圈内容的操作。

Hibernate 如何实现多态映射? Hibernate 如何实现多态映射? Apr 17, 2024 pm 12:09 PM

Hibernate多态映射可映射继承类到数据库,提供以下映射类型:joined-subclass:为子类创建单独表,包含父类所有列。table-per-class:为子类创建单独表,仅包含子类特有列。union-subclass:类似joined-subclass,但父类表联合所有子类列。

iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 Jul 18, 2024 am 05:48 AM

苹果公司最新发布的iOS18、iPadOS18以及macOSSequoia系统为Photos应用增添了一项重要功能,旨在帮助用户轻松恢复因各种原因丢失或损坏的照片和视频。这项新功能在Photos应用的"工具"部分引入了一个名为"已恢复"的相册,当用户设备中存在未纳入其照片库的图片或视频时,该相册将自动显示。"已恢复"相册的出现为因数据库损坏、相机应用未正确保存至照片库或第三方应用管理照片库时照片和视频丢失提供了解决方案。用户只需简单几步

在PHP中使用MySQLi建立数据库连接的详尽教程 在PHP中使用MySQLi建立数据库连接的详尽教程 Jun 04, 2024 pm 01:42 PM

如何在PHP中使用MySQLi建立数据库连接:包含MySQLi扩展(require_once)创建连接函数(functionconnect_to_db)调用连接函数($conn=connect_to_db())执行查询($result=$conn->query())关闭连接($conn->close())

深入解析HTML如何读取数据库 深入解析HTML如何读取数据库 Apr 09, 2024 pm 12:36 PM

HTML无法直接读取数据库,但可以通过JavaScript和AJAX实现。其步骤包括建立数据库连接、发送查询、处理响应和更新页面。本文提供了利用JavaScript、AJAX和PHP来从MySQL数据库读取数据的实战示例,展示了如何在HTML页面中动态显示查询结果。该示例使用XMLHttpRequest建立数据库连接,发送查询并处理响应,从而将数据填充到页面元素中,实现了HTML读取数据库的功能。

如何在PHP中处理数据库连接错误 如何在PHP中处理数据库连接错误 Jun 05, 2024 pm 02:16 PM

PHP中处理数据库连接报错,可以使用以下步骤:使用mysqli_connect_errno()获取错误代码。使用mysqli_connect_error()获取错误消息。通过捕获并记录这些错误信息,可以轻松识别并解决数据库连接问题,确保应用程序的顺畅运行。

Go 语言文件重命名操作全解析 Go 语言文件重命名操作全解析 Apr 08, 2024 pm 03:30 PM

Go语言中使用os.Rename函数重命名文件,语法为:funcRename(oldpath,newpathstring)error。该函数将oldpath指定的文件重命名为newpath指定的文件。示例包括简单重命名、移动文件到不同目录以及忽略错误处理。Rename函数执行原子操作,在两个文件位于同一目录时可能仅更新目录项,跨卷或正在使用的文件重命名可能失败。

See all articles