VC 对Access数据库读写操作实例
来源:互联网 发布:机枪升级数据 编辑:程序博客网 时间:2024/05/21 15:46
直接利用DAO来创建、读写Access文件。在下面的示例中,我们将用到两种方法:SQL和DAO类函数来混合实现它们,这样做的目地,我想可以使大家更加方便灵活的运用它们来完成你想要做的东西。在示例程序中默认指定创建数据库名为:Demo.mdb,内部表名为:DemoTable,写入两个字段:名字和年龄,采用和上一篇读写Excel类似的操作,你也可以根据自己需要来动态改变它们。示例程序运行界面如下所示:
下面让我们来简要看看它的实现步骤:
1. 首先,应确保包含进了afxdao.h头文件,可以在StdAfx.h文件中包含它,如下:
1. 首先,应确保包含进了afxdao.h头文件,可以在StdAfx.h文件中包含它,如下:
- C/C++ code复制代码
#include <afxdao.h> //加入DAO数据库支持
- C/C++ code复制代码
CDaoDatabase db; //数据库CDaoRecordset RecSet(&db); //记录集
3. 接着,先让我们来实现它的创建及写入操作:
- C/C++ code复制代码
void CRWAccessDlg::OnWriteAccess() {//获取主程序所在路径,存在sPath中CString sPath;GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);sPath.ReleaseBuffer ();int nPos;nPos=sPath.ReverseFind (''\\'');sPath=sPath.Left (nPos);//默认创建数据名:Demo.mdb,内部表名:DemoTable,表内有二个字段:姓名、年龄CString lpszFile = sPath + "\\Demo.mdb";CFileFind fFind;BOOL bSuccess;bSuccess=fFind.FindFile(lpszFile);fFind.Close (); //是否已有创建好的Demo.mdb文件,没有则创建它if(!bSuccess){db.Create(lpszFile);CString SqlCmd = "CREATE TABLE DemoTable(Name VARCHAR(20),Age VARCHAR(3));";db.Execute(SqlCmd);//打开已创建的数据表RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DemoTable", 0);//加入第一个记录,用SQL语句db.Execute("INSERT INTO DemoTable (Name,Age) VALUES (''徐景周'',26)");//加入第二个记录,用DAO涵数RecSet.AddNew();RecSet.SetFieldValue("Name","徐志慧");RecSet.SetFieldValue("Age","21");RecSet.Update();//加入第三个记录,用DAO涵数RecSet.AddNew();RecSet.SetFieldValue("Name","郭徽");RecSet.SetFieldValue("Age","27");RecSet.Update();//关闭记录集及库RecSet.Close();db.Close();AfxMessageBox("Access文件写入成功!");}elseAfxMessageBox("Demo.mdb数据库已经创建!");}
4. 最后,让我们来实现它的读取操作。
- C/C++ code复制代码
void CRWAccessDlg::OnReadAccess() {COleVariant var;// 字段类型var.ChangeType(VT_BSTR, NULL);CString strName,strAge,strFile; //清空列表框m_AccessList.ResetContent();//获取主程序所在路径,存在sPath中CString sPath;GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);sPath.ReleaseBuffer (); int nPos;nPos=sPath.ReverseFind (''\\'');sPath=sPath.Left (nPos);strFile = sPath + "\\demo.mdb";db.Open(strFile);// 打开已创建的demo数据库及DamoTable表RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DemoTable",NULL);while(!RecSet.IsEOF())// 有没有到表结尾{RecSet.GetFieldValue("Name",var);strName = (LPCSTR)var.pbstrVal;RecSet.GetFieldValue("Age",var);strAge = (LPCSTR)var.pbstrVal;m_AccessList.AddString( strName + " --> "+strAge );RecSet.MoveNext();}//关闭记录集及库RecSet.Close();db.Close();}
相关细节参考打包源码:http://www.newxing.com/Code/VC/data/43.html
转载博客源于:http://www.newxing.com/Tech/Program/VC/81.html
0 0
- VC 对Access数据库读写操作实例
- vc+对access数据库操
- VC++ 操作access数据库方法
- vc++实现对列表框的操作 ado 操作数据库实现对数据的增删 access
- asp操作access数据库实例
- javascript读写客户端ACCESS数据库实例
- asp操作access数据库的读写删
- vc对Access数据库访问方法
- VC++对Access数据库的操作(查询、插入、更新、删除等)
- MS SQL数据库对ACCESS数据库操作
- VC对csv文件进行读写操作
- VC中用ODBC操作Access数据库
- VC通过ADO操作Access数据库[转]
- VC通过ADO操作Access数据库
- VC通过ADO操作Access数据库[转]
- VC数据库编程 ADO操作Access
- VC通过ADO操作Access数据库
- Android对IO进行读写操作实例
- HDU 1257 最少拦截系统【dp】
- uva11059
- Java循环结构
- 基本数据类型 和 变量
- poj 1030
- VC 对Access数据库读写操作实例
- pat-bl-1042
- java30天从入门到放弃心得
- 开发板linux中运行简单hello world应用程序的printf无输出的原因
- rollup、cube、grouping、rank、dense_rank、row_number函数简介
- 自动截取短信验证码
- JAX-RS规范-常用注解解析
- 11111UVa俄罗斯套娃
- Redis学习(三)-Java实现基于Jedis+Spring的通用工具类