搜索
首页数据库mysql教程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
MySQL和其他SQL方言之间的语法有什么区别?MySQL和其他SQL方言之间的语法有什么区别?Apr 27, 2025 am 12:26 AM

mysqldiffersfromothersqldialectsinsyntaxforlimit,自动启动,弦乐范围,子征服和表面上分析。1)MySqluessLipslimit,whilesqlserverusestopopandoraclesrontersrontsrontsrontsronnum.2)

什么是mysql分区?什么是mysql分区?Apr 27, 2025 am 12:23 AM

MySQL分区能提升性能和简化维护。1)通过按特定标准(如日期范围)将大表分成小块,2)物理上将数据分成独立文件,3)查询时MySQL可专注于相关分区,4)查询优化器可跳过不相关分区,5)选择合适的分区策略并定期维护是关键。

您如何在MySQL中授予和撤销特权?您如何在MySQL中授予和撤销特权?Apr 27, 2025 am 12:21 AM

在MySQL中,如何授予和撤销权限?1.使用GRANT语句授予权限,如GRANTALLPRIVILEGESONdatabase_name.TO'username'@'host';2.使用REVOKE语句撤销权限,如REVOKEALLPRIVILEGESONdatabase_name.FROM'username'@'host',确保及时沟通权限变更。

说明InnoDB和Myisam存储引擎之间的差异。说明InnoDB和Myisam存储引擎之间的差异。Apr 27, 2025 am 12:20 AM

InnoDB适合需要事务支持和高并发性的应用,MyISAM适合读多写少的应用。1.InnoDB支持事务和行级锁,适用于电商和银行系统。2.MyISAM提供快速读取和索引,适合博客和内容管理系统。

MySQL中有哪些不同类型的连接?MySQL中有哪些不同类型的连接?Apr 27, 2025 am 12:13 AM

MySQL中有四种主要的JOIN类型:INNERJOIN、LEFTJOIN、RIGHTJOIN和FULLOUTERJOIN。1.INNERJOIN返回两个表中符合JOIN条件的所有行。2.LEFTJOIN返回左表中的所有行,即使右表中没有匹配的行。3.RIGHTJOIN与LEFTJOIN相反,返回右表中的所有行。4.FULLOUTERJOIN返回两个表中所有符合或不符合JOIN条件的行。

MySQL中有哪些不同的存储引擎?MySQL中有哪些不同的存储引擎?Apr 26, 2025 am 12:27 AM

mysqloffersvariousStorageengines,每个suitedfordferentusecases:1)InnodBisidealForapplicationsNeedingingAcidComplianCeanDhighConcurncurnency,supportingtransactionsancions and foreignkeys.2)myisamisbestforread-Heavy-Heavywyworks,lackingtransactionsactionsacupport.3)记忆

MySQL中有哪些常见的安全漏洞?MySQL中有哪些常见的安全漏洞?Apr 26, 2025 am 12:27 AM

MySQL中常见的安全漏洞包括SQL注入、弱密码、权限配置不当和未更新的软件。1.SQL注入可以通过使用预处理语句防止。2.弱密码可以通过强制使用强密码策略避免。3.权限配置不当可以通过定期审查和调整用户权限解决。4.未更新的软件可以通过定期检查和更新MySQL版本来修补。

您如何确定MySQL中的慢速查询?您如何确定MySQL中的慢速查询?Apr 26, 2025 am 12:15 AM

在MySQL中识别慢查询可以通过启用慢查询日志并设置阈值来实现。1.启用慢查询日志并设置阈值。2.查看和分析慢查询日志文件,使用工具如mysqldumpslow或pt-query-digest进行深入分析。3.优化慢查询可以通过索引优化、查询重写和避免使用SELECT*来实现。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!