搜尋
首頁資料庫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如何處理數據複製?MySQL如何處理數據複製?Apr 28, 2025 am 12:25 AM

MySQL通過異步、半同步和組複製三種模式處理數據複製。 1)異步複製性能高但可能丟失數據。 2)半同步複製提高數據安全性但增加延遲。 3)組複製支持多主複製和故障轉移,適用於高可用性需求。

您如何使用解釋性語句分析查詢性能?您如何使用解釋性語句分析查詢性能?Apr 28, 2025 am 12:24 AM

EXPLAIN語句可用於分析和提升SQL查詢性能。 1.執行EXPLAIN語句查看查詢計劃。 2.分析輸出結果,關注訪問類型、索引使用情況和JOIN順序。 3.根據分析結果,創建或調整索引,優化JOIN操作,避免全表掃描,以提升查詢效率。

您如何備份並還原MySQL數據庫?您如何備份並還原MySQL數據庫?Apr 28, 2025 am 12:23 AM

使用mysqldump進行邏輯備份和MySQLEnterpriseBackup進行熱備份是備份MySQL數據庫的有效方法。 1.使用mysqldump備份數據庫:mysqldump-uroot-pmydatabase>mydatabase_backup.sql。 2.使用MySQLEnterpriseBackup進行熱備份:mysqlbackup--user=root--password=password--backup-dir=/path/to/backupbackup。恢復時,使用相應的命

MySQL中慢速查詢的常見原因是什麼?MySQL中慢速查詢的常見原因是什麼?Apr 28, 2025 am 12:18 AM

MySQL慢查詢的主要原因包括索引缺失或不當使用、查詢複雜度、數據量過大和硬件資源不足。優化建議包括:1.創建合適的索引;2.優化查詢語句;3.使用分錶分區技術;4.適當升級硬件。

MySQL中有什麼看法?MySQL中有什麼看法?Apr 28, 2025 am 12:04 AM

MySQL視圖是基於SQL查詢結果的虛擬表,不存儲數據。 1)視圖簡化複雜查詢,2)增強數據安全性,3)維護數據一致性。視圖是數據庫中的存儲查詢,可像表一樣使用,但數據動態生成。

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',確保及時溝通權限變更。

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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器