首頁 資料庫 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脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++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.點選右下角的【刪除】按鈕,在彈出的視窗中選擇【確認刪除】即可將這些記錄永久刪除。

iOS 18 新增「已復原」相簿功能 可找回遺失或損壞的照片 iOS 18 新增「已復原」相簿功能 可找回遺失或損壞的照片 Jul 18, 2024 am 05:48 AM

蘋果公司最新發布的iOS18、iPadOS18以及macOSSequoia系統為Photos應用程式增添了一項重要功能,旨在幫助用戶輕鬆恢復因各種原因遺失或損壞的照片和影片。這項新功能在Photos應用的"工具"部分引入了一個名為"已恢復"的相冊,當用戶設備中存在未納入其照片庫的圖片或影片時,該相冊將自動顯示。 "已恢復"相簿的出現為因資料庫損壞、相機應用未正確保存至照片庫或第三方應用管理照片庫時照片和視頻丟失提供了解決方案。使用者只需簡單幾步

Hibernate 如何實作多型映射? Hibernate 如何實作多型映射? Apr 17, 2024 pm 12:09 PM

Hibernate多態映射可映射繼承類別到資料庫,提供以下映射類型:joined-subclass:為子類別建立單獨表,包含父類別所有欄位。 table-per-class:為子類別建立單獨資料表,僅包含子類別特有列。 union-subclass:類似joined-subclass,但父類別表聯合所有子類別列。

在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())

如何在PHP中處理資料庫連線錯誤 如何在PHP中處理資料庫連線錯誤 Jun 05, 2024 pm 02:16 PM

PHP處理資料庫連線報錯,可以使用下列步驟:使用mysqli_connect_errno()取得錯誤代碼。使用mysqli_connect_error()取得錯誤訊息。透過擷取並記錄這些錯誤訊息,可以輕鬆識別並解決資料庫連接問題,確保應用程式的順暢運作。

Astar質押原理、收益拆解、空投項目及策略 & 操作保姆級攻略 Astar質押原理、收益拆解、空投項目及策略 & 操作保姆級攻略 Jun 25, 2024 pm 07:09 PM

目錄Astar Dapp 質押原理質押收益 拆解潛在空投項目:AlgemNeurolancheHealthreeAstar Degens DAOVeryLongSwap 質押策略 & 操作“AstarDapp質押”今年初已升級至V3版本,對質押收益規則做了不少調整。目前首個質押週期已結束,第二質押週期的「投票」子週期剛開始。若要獲得「額外獎勵」收益,需掌握此關鍵階段(預計持續至6月26日,現餘不到5天)。我將細緻拆解Astar質押收益,

如何在 Golang 中使用資料庫回呼函數? 如何在 Golang 中使用資料庫回呼函數? Jun 03, 2024 pm 02:20 PM

在Golang中使用資料庫回呼函數可以實現:在指定資料庫操作完成後執行自訂程式碼。透過單獨的函數新增自訂行為,無需編寫額外程式碼。回調函數可用於插入、更新、刪除和查詢操作。必須使用sql.Exec、sql.QueryRow或sql.Query函數才能使用回呼函數。

如何用 Golang 連接遠端資料庫? 如何用 Golang 連接遠端資料庫? Jun 01, 2024 pm 08:31 PM

透過Go標準庫database/sql包,可以連接到MySQL、PostgreSQL或SQLite等遠端資料庫:建立包含資料庫連接資訊的連接字串。使用sql.Open()函數開啟資料庫連線。執行SQL查詢和插入操作等資料庫操作。使用defer關閉資料庫連線以釋放資源。

See all articles