找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4264|回复: 0
打印 上一主题 下一主题
收起左侧

学生信息管理系统—MFC数据库读写操作

[复制链接]
跳转到指定楼层
楼主
ID:90014 发表于 2015-9-16 00:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、相关知识:
添加头文件#include <afxdao.h> //dao的头文件
#include<comdef.h> //在数据格式转换时会用得到(_variant_t(m_name))建立两个全局变量,CDaoDatabase db;CDaoRecortset Dbset(&db);
2.添加一个列表控件
在初始化函数里添加如下代码:
m_list.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES);//设置列表的扩展风格,参数的意思分别为:扁平的滚动条、选择整行、报表头可拖拽、单机激活、绘制表格
m_list.InsertColumn(0,"姓名",LVCFMT_LEFT,227,0);
m_list.InsertColumn(1,"年龄",LVCFMT_LEFT,227,1);数据表的设计是:学生(姓名,年龄)//这里只是基本操作,还可以添加其他的选项,如学号之类的
4判断数据库文件存不存在
CString Filepath="data.mdb";CFileFind Ffind;
BOOL flag=Ffind.FindFile(Filepath);;Ffind.Close();if(!flag){//如果不存在,就创建数据库 db.Create(Filepath); CString sqlcmd="CREATE TABLE DataTable(Name VARCHAR(20),Age VARCHAR(3))";//sql指令 db.Execute(sqlcmd);db.Close(); MessageBox("数据库建立完成!","数据库消息");}
5.将数据库的内容读取到列表中
主要注意的是格式转换:_variant_t varname;COleVariant varage;CString Sname,Sage;varname=Dbset.GetFieldValue("Name");Dbset.GetFieldValue("Age",varage);Sname=(LPCSTR)_bstr_t(varname);Sage=(LPCSTR)varage.pbstrVal;以及数据库的打开与关闭db.Open(Filepath);Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DataTable",0);Dbset.Close();db.Close();
6.新增操作
//核心代码db.Open(Filepath);Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DataTable",0);Dbset.AddNew();//在记录集的尾端添加Dbset.SetFieldValue("Name",_variant_t(m_name));Dbset.SetFieldValue("Age",atol(m_age));Dbset.Update();//需要及时更新Dbset.Close();db.Close();
7.删除操作
//核心代码int pos=m_list.GetSelectionMark();db.Open(Filepath);Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DataTable",0);Dbset.Move(pos);Dbset.Delete();//删除一行不需要更新Dbset.Close();db.Close();
8.修改操作
//核心代码db.Open(Filepath);Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DataTable",0);Dbset.Move(pos);Dbset.Edit();//初始化编辑Dbset.SetFieldValue("Name",_variant_t(m_name));Dbset.SetFieldValue("Age",atol(m_age));Dbset.Update();//编辑完以后要及时更新Dbset.Close();db.Close();
9.注意的是
本例中并没有限制相同数据的录入,比如连续两次输入:Plucky,21Plucky,21数据库会接受,如果要限制,只要加一个检测函数就可以,实现起来也很简单,这里就不赘述。还有对年龄的输入也没有限制,可以通过sql语言来实现,也可以通过对m_age的限制来实现。打开、创建完数据库后要记得关闭,否则会出错


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表