access c++ mfc使用

来源:互联网 发布:什么是攻守道 知乎 编辑:程序博客网 时间:2024/06/08 00:43


前言简介  引用百度 

Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。
Microsoft Office Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。它是微软OFFICE的一个成员, 在包括专业版和更高版本的office版本里面被单独出售。2012年12月4日,最新的微软Office Access 2016在微软Office 2016里发布,微软Office Access 2013 是前一个版本。
MS ACCESS以它自己的格式将数据存储在基于Access Jet的数据库引擎里。它还可以直接导入或者链接数据(这些数据存储在其他应用程序和数据库)。
软件开发人员和数据架构师可以使用Microsoft Access开发应用软件,“高级用户”可以使用它来构建软件应用程序。和其他办公应用程序一样,ACCESS支持Visual Basic宏语言,它是一个面向对象的编程语言,可以引用各种对象,包括DAO(数据访问对象),ActiveX数据对象,以及许多其他的ActiveX组件。可视对象用于显示表和报表,他们的方法和属性是在VBA编程环境下,VBA代码模块可以声明和调用Windows操作系统函数。

个人吐槽

最近一个小项目需要客户需要用到 access  于是 我去下载一个 怎么找都是 跳到 Microsoft Office这个鬼玩意。。 折腾了一个多小时才发现 是他的组件之一好吧。。。。

正文

链接dll

需要 先链接 dll  一般安装之后 都会在 C:\Program Files\Common Files\System\ADO\msado15.dll 这个位置  当然如果没有直接查找 msado15.dll 自己改路径好了   
把这个玩意放到 stdafx.h头文件里面
  
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace  rename("EOF", "adoEOF")

no_namespace   不适用命名空间      

 rename("EOF", "adoEOF")      因为 EOF和windows  宏定义重出  所以需要自己命名一个   一般看他们的文章都写 ado EOF...随大流好了

然后在类里面导入三个  对象 

_ConnectionPtr m_pConnection;//创建数据库的链接对象_RecordsetPtr m_pRecordset;// 创建记录集    采集数据_CommandPtr m_pCommand;//命令对象 使用SQL语句

初始化

忘记了是摘抄那个前辈的代码了。。。   关键点就是Data Source=zk_study.mdb  改成自己的  mdb..


HRESULT hr = m_pConnection.CreateInstance(__uuidof(Connection));//创建Connection对象if (SUCCEEDED(hr)){m_pConnection->ConnectionTimeout = 600;//  链接数据库时间限制 m_pConnection->CommandTimeout = 120;//  也许是SQL语句执行时间限制//然后打开数据库  OPEN函数的参数是很有讲究的//Open 方法可打开一个到数据源的连接。当连接打开时,您可以对数据源执行命令//一个包含有关连接的信息的字符串值。该字符串由一系列被分号隔开的 parameter=value 语句组成的。//一个字符串值,包含建立连接时要使用的用户名称。//一个字符串值,包含建立连接时要使用的密码。//一个 ConnectOptionEnum 值,确定应在建立连接之后(同步)还是应在建立连接之前(异步)返回本方法。hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=zk_study.mdb", "", "", adModeUnknown);// //ConnectionString 属性有 5 个参数://Provider---》用于连接的提供者的名称。//File Name---》提供者特有的文件(例如,持久保留的数据源对象)的名称,这些文件中包含预置的连接信息。//Remote Provider--》当打开客户端连接时使用的提供者的名称。(仅限于远程数据服务。)//Remote Server--》当打开客户端连接时使用的服务器的路径名称。(仅限于远程数据服务。)//url---》标识资源(比如文件或目录)的绝对 URL。//打开模式/*adModeUnknown = 0,adModeRead = 1,adModeWrite = 2,adModeReadWrite = 3,adModeShareDenyRead = 4,adModeShareDenyWrite = 8,adModeShareExclusive = 12,adModeShareDenyNone = 16,adModeRecursive = 4194304*/m_pRecordset.CreateInstance(__uuidof(Recordset));//这是com组件里面创建对象的调用方法,对象调用CreateInstance创建,参数是全球唯一标示符}

查询    

直接使用 sql 的语句即可

char buf[MAX_PATH];sprintf(buf, "SELECT * FROM %c", ch);//查找的表格m_pRecordset->Open(buf,                // 查询STUDENT表中所有字段,即对表STUDENT进行操作m_pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针adOpenDynamic,adLockOptimistic,adCmdText);while (!m_pRecordset->adoEOF){_variant_t  theValue;theValue = m_pRecordset->GetCollect("释义");//查找 解释if (theValue.vt == VT_NULL){m_pRecordset->MoveNext();continue;//如果不为空  的话}m_pRecordset->MoveNext();}
增删改查    都是 一路货色  会SQL语句即可

0 0
原创粉丝点击