MFC ado操作mdb数据库
2016-12-19 11:48
288 查看
1.新建基于对话框应用程序
找到stdafx.h文件 在末尾加入
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2.找到对话框app类初始化函数InitInstance()其中加入
::CoInitialize(NULL);
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;并在.h给对话框添加方法(函数)
void OnInitADOConn(void);
void ExitConnect(void);
void AddToGrid(void);4.在对话框中添加list control控件设置auto arrange为true 。alignment为top 。 no label wrap 为true。 view 为 report(报表) sort为none。
添加四个edit控件分别用作学生编号,姓名,性别,学号。四个button控件添加,修改,删除,清空。
list控件添加控制变量m_Grid edit添加字符串值变量分别为
CString m_ID;
CString m_Name;
CString m_Sex;
CString m_StuID;5.找到控制面板,管理工具(查看方式小图标就有了),数据源odbc。在这里新建mdb数据库到工程debug里,命名为shujuku.mdb。
6.双击添加按钮写入
UpdateData(TRUE);
if(m_ID.IsEmpty()||m_Name.IsEmpty()||m_Sex.IsEmpty()||m_StuID.IsEmpty())
{
MessageBox("基础信息不能为空!");
return;
}
OnInitADOConn();
_bstr_t sql;
sql="select * from 表1";
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
try
{
m_pRecordset->AddNew();//添加新行
m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);
m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);
m_pRecordset->PutCollect("性别",(_bstr_t)m_Sex);
m_pRecordset->PutCollect("学号",(_bstr_t)m_StuID);
m_pRecordset->Update();
//更新数据表
ExitConnect();
}
catch(...)
{
MessageBox("操作失败");
return;
}
MessageBox("添加成功");
m_Grid.DeleteAllItems();
//删除列表控件
AddToGrid();双击修改按钮写入
UpdateData(TRUE);
if(m_ID.IsEmpty()||m_Name.IsEmpty()||m_Sex.IsEmpty()||m_StuID.IsEmpty())
{
MessageBox("基础信息不能为空!");
return;
}
OnInitADOConn();
_bstr_t sql;
sql="select * from 表1";
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
long pos = m_Grid.GetSelectionMark();
try
{
m_pRecordset->Move((long)pos,vtMissing);
m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);
m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);
m_pRecordset->PutCollect("性别",(_bstr_t)m_Sex);
m_pRecordset->PutCollect("学号",(_bstr_t)m_StuID);
m_pRecordset->Update();
ExitConnect();
}
catch(...)
{
MessageBox("操作失败");
return;
}
MessageBox("修改成功");
m_Grid.DeleteAllItems();
AddToGrid();双击删除按钮写入
OnInitADOConn();
_bstr_t sql;
sql="select * from 表1";
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
long pos=m_Grid.GetSelectionMark();
try
{m_pRecordset->Move((long)pos,vtMissing);
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Update();
ExitConnect();
}
catch(...)
{
MessageBox("操作失败");
return;
}
MessageBox("删除成功");
m_Grid.DeleteAllItems();
AddToGrid();双击清除按钮写入
m_ID="";
m_Name="";
m_Sex="";
m_StuID="";
UpdateData(FALSE);写函数AddToGrid
void CMDBDlg::AddToGrid(void)
{
OnInitADOConn();
//设置查询字符串
_bstr_t bstrSQL ="select * from 表1 order by 编号 desc";//创建记录集指针对象实例
m_pRecordset.CreateInstance(__uuidof(Recordset));
//打开记录集
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
while(!m_pRecordset->adoEOF)
{
m_Grid.InsertItem(0,"");
m_Grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("编号"));
m_Grid.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("姓名"));
m_Grid.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect("性别"));
m_Grid.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect("学历"));
//将记录集指针移动到下一条记录
m_pRecordset->MoveNext();
}//断开数据库连接
ExitConnect();
}写函数oninitadoconn exitconnect
m_Grid.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES);
m_Grid.InsertColumn(0,"编号",LVCFMT_LEFT,110,0);
m_Grid.InsertColumn(1,"姓名",LVCFMT_LEFT,110,1);
m_Grid.InsertColumn(2,"性别",LVCFMT_LEFT,110,2);
m_Grid.InsertColumn(3,"学号",LVCFMT_LEFT,110,3);
AddToGrid();7.编译运行。
找到stdafx.h文件 在末尾加入
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2.找到对话框app类初始化函数InitInstance()其中加入
::CoInitialize(NULL);
::CoUninitialize();//在return之前3.在对话框.h文件中定义
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;并在.h给对话框添加方法(函数)
void OnInitADOConn(void);
void ExitConnect(void);
void AddToGrid(void);4.在对话框中添加list control控件设置auto arrange为true 。alignment为top 。 no label wrap 为true。 view 为 report(报表) sort为none。
添加四个edit控件分别用作学生编号,姓名,性别,学号。四个button控件添加,修改,删除,清空。
list控件添加控制变量m_Grid edit添加字符串值变量分别为
CString m_ID;
CString m_Name;
CString m_Sex;
CString m_StuID;5.找到控制面板,管理工具(查看方式小图标就有了),数据源odbc。在这里新建mdb数据库到工程debug里,命名为shujuku.mdb。
6.双击添加按钮写入
UpdateData(TRUE);
if(m_ID.IsEmpty()||m_Name.IsEmpty()||m_Sex.IsEmpty()||m_StuID.IsEmpty())
{
MessageBox("基础信息不能为空!");
return;
}
OnInitADOConn();
_bstr_t sql;
sql="select * from 表1";
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
try
{
m_pRecordset->AddNew();//添加新行
m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);
m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);
m_pRecordset->PutCollect("性别",(_bstr_t)m_Sex);
m_pRecordset->PutCollect("学号",(_bstr_t)m_StuID);
m_pRecordset->Update();
//更新数据表
ExitConnect();
}
catch(...)
{
MessageBox("操作失败");
return;
}
MessageBox("添加成功");
m_Grid.DeleteAllItems();
//删除列表控件
AddToGrid();双击修改按钮写入
UpdateData(TRUE);
if(m_ID.IsEmpty()||m_Name.IsEmpty()||m_Sex.IsEmpty()||m_StuID.IsEmpty())
{
MessageBox("基础信息不能为空!");
return;
}
OnInitADOConn();
_bstr_t sql;
sql="select * from 表1";
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
long pos = m_Grid.GetSelectionMark();
try
{
m_pRecordset->Move((long)pos,vtMissing);
m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);
m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);
m_pRecordset->PutCollect("性别",(_bstr_t)m_Sex);
m_pRecordset->PutCollect("学号",(_bstr_t)m_StuID);
m_pRecordset->Update();
ExitConnect();
}
catch(...)
{
MessageBox("操作失败");
return;
}
MessageBox("修改成功");
m_Grid.DeleteAllItems();
AddToGrid();双击删除按钮写入
OnInitADOConn();
_bstr_t sql;
sql="select * from 表1";
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
long pos=m_Grid.GetSelectionMark();
try
{m_pRecordset->Move((long)pos,vtMissing);
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Update();
ExitConnect();
}
catch(...)
{
MessageBox("操作失败");
return;
}
MessageBox("删除成功");
m_Grid.DeleteAllItems();
AddToGrid();双击清除按钮写入
m_ID="";
m_Name="";
m_Sex="";
m_StuID="";
UpdateData(FALSE);写函数AddToGrid
void CMDBDlg::AddToGrid(void)
{
OnInitADOConn();
//设置查询字符串
_bstr_t bstrSQL ="select * from 表1 order by 编号 desc";//创建记录集指针对象实例
m_pRecordset.CreateInstance(__uuidof(Recordset));
//打开记录集
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
while(!m_pRecordset->adoEOF)
{
m_Grid.InsertItem(0,"");
m_Grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("编号"));
m_Grid.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("姓名"));
m_Grid.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect("性别"));
m_Grid.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect("学历"));
//将记录集指针移动到下一条记录
m_pRecordset->MoveNext();
}//断开数据库连接
ExitConnect();
}写函数oninitadoconn exitconnect
void CMDBDlg::OnInitADOConn(void) { try{//创建连接对象实例 m_pConnection.CreateInstance("ADODB.Connection"); TCHAR pszFileName[MAX_PATH]; GetModuleFileName(NULL,pszFileName,MAX_PATH); CString psFileName; psFileName=pszFileName; psFileName=psFileName.Left(psFileName.ReverseFind('\\')); CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=;DBQ="; strConnect+=psFileName; strConnect+="\\shujuku.mdb;"; //使用Open方法连接数据库 m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown); //AfxMessageBox("数据库连接成功!"); } catch(_com_error e) { AfxMessageBox(e.Description()); } } void CMDBDlg::ExitConnect(void) { if(m_pRecordset!=NULL) m_pRecordset->Close(); m_pConnection->Close(); }在对话框.cpp初始化函数中添加代码
m_Grid.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES);
m_Grid.InsertColumn(0,"编号",LVCFMT_LEFT,110,0);
m_Grid.InsertColumn(1,"姓名",LVCFMT_LEFT,110,1);
m_Grid.InsertColumn(2,"性别",LVCFMT_LEFT,110,2);
m_Grid.InsertColumn(3,"学号",LVCFMT_LEFT,110,3);
AddToGrid();7.编译运行。
相关文章推荐
- ADO 开发指南(程式猎人收集整理)----发现最好的ADO MFC的数据库操作
- MFC 和 数据库Access 用 Ado类 操作
- MFC开发心得——ADO连接和操作数据库
- [MFC]ADO操作数据库
- MFC中使用ADO操作各类数据库的封装类,包括MySql、Access、Oracle、MSSql
- MFC中使用ADO进行数据库操作 参考FROM:http://hi.baidu.com/sunkanghome/item/e1fda510b3186359f1090ee2 数据库与数据库编程: 当
- MFC,ADO方式实现数据库操作
- vs2012 MFC连接及操作access(2007)数据库(ADO)
- MFC中利用ADO对数据库进行简单操作的实例
- VC编译没有错误,exe文件操作数据库(ADO/MDB)时报错,解决方法
- MFC使用ado链接数据库,及数据库操作
- MFC VC ADO链接SQL Server数据库 操作数据库数据
- MFC中ADO方式操作数据库实例
- MFC下ADO方式操作数据库
- MFC中使用ADO操作各类数据库的封装类,包括MySql、Access、Oracle、MSSql
- MFC ADO数据库操作
- 操作、压缩MDB文件;使用ADO读写Mysql数据库;建立数据库和表的VBS脚本代码(2013-08-26 11:39:34)
- ADO.NET 操作数据库
- 封装的ADO.NET对数据库操作经典类
- 使用ADO操作数据库时一个好用的VARIANT类!