根据给定的文件信息,我们可以总结出以下关于“在 C++ 下操作 Access 数据库”的相关知识点: ### 一、概述 在本示例代码中,我们看到了如何利用 ActiveX Data Objects (ADO) 库来实现对 Microsoft Access 数据库的操作。ADO 是一种用于访问关系型数据库的标准接口,它支持多种数据库系统,包括但不限于 Microsoft Access 和 SQL Server。 ### 二、环境配置与导入 ADO 库 #### 1. 导入 ADO 库 ```cpp #include<iostream> #import"c:\programfiles\commonfiles\system\ado\msado15.dll"no_namespacerename("EOF","adoEOF") ``` 这里通过 `#import` 指令导入了 ADO 的 DLL 文件。注意路径可能因系统的具体安装位置而有所不同。`no_namespace rename("EOF", "adoEOF")` 这一行的作用是避免命名冲突问题,确保 EOF 符号不会与 ADO 库中的符号冲突。 ### 三、创建 ADO 对象 #### 1. 初始化 COM 库 ```cpp CoInitialize(NULL); ``` 初始化 COM 库是必要的步骤,因为它为 ADO 提供了一个运行环境。 #### 2. 创建连接对象 ```cpp _ConnectionPtr m_pConnection; m_pConnection.CreateInstance(__uuidof(Connection)); ``` 这里创建了一个 `_ConnectionPtr` 类型的对象 `m_pConnection` 并实例化了 ADO 的 `Connection` 类,这是与数据库建立连接的第一步。 ### 四、打开数据库连接 #### 1. 设置连接字符串 ```cpp m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=.\/mydb.mdb","","",adModeUnknown); ``` - **Provider**: 指定了数据提供者,这里是 Microsoft Jet 4.0,它是 Access 数据库的驱动程序。 - **DataSource**: 指定数据库文件的位置。 - **adModeUnknown**: 表示使用未知模式打开数据库。实际上,这里有多种模式可以选择: - `adModeUnknown`: 缺省值,未知模式。 - `adModeRead`: 只读模式。 - `adModeWrite`: 只写模式。 - `adModeReadWrite`: 读写模式。 - `adModeShareDenyRead`: 共享模式,但不允许其他连接读取数据。 - `adModeShareDenyWrite`: 共享模式,但不允许其他连接写入数据。 - `adModeShareExclusive`: 独占模式。 - `adModeShareDenyNone`: 完全共享模式。 #### 2. 使用 try-catch 结构处理异常 ```cpp try { // 打开连接的代码 } catch (_com_error e) { cout << "数据库连接失败,请检查 mydb.mdb 是否位于当前目录!" << endl; return FALSE; } ``` 通过这种方式可以捕获打开数据库时可能出现的错误,并进行相应的错误处理。 ### 五、执行 SQL 查询 #### 1. 创建 Recordset 对象 ```cpp _RecordsetPtr m_pRecordset; m_pRecordset.CreateInstance(__uuidof(Recordset)); ``` `Recordset` 对象用来存储执行 SQL 查询后的结果集。 #### 2. 执行 SQL 查询 ```cpp m_pRecordset->Open("SELECT * FROM test", m_pConnection.Get(), adOpenDynamic, adLockOptimistic, adCmdText); ``` - **SQL 语句**: `"SELECT * FROM test"` 用来从名为 `test` 的表中获取所有记录。 - **m_pConnection.Get()**: 表示使用之前打开的数据库连接。 - **adOpenDynamic**: 表示结果集是动态的,即当其他用户更改基础数据时,这些更改会反映到结果集中。 - **adLockOptimistic**: 乐观锁定,表示可以在没有锁定的情况下读取数据。 - **adCmdText**: 表示 SQL 命令是文本形式的。 ### 六、总结 通过以上步骤,我们成功地实现了在 C++ 环境下使用 ADO 来打开并查询 Microsoft Access 数据库的功能。这为开发人员提供了简单高效的方式来操作数据库,尤其是在不需要复杂数据库功能的应用场景下。同时,需要注意的是,虽然这段代码演示了基本的连接和查询过程,但在实际应用中还需要考虑更多的细节,比如安全性、性能优化等方面的问题。













#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")
//ADO连接数据库所需的dll,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库
//注意这里的import一定要放在一行
using namespace std;
int main(){
//该程序使用ADO连接ACCESS(装office的时候里面有)数据库 后缀为.mdb 运行平台vc6.0
//2003平台在写着
//---------------------------------------------------------------------------------
//ADO数据库连接分五步走,
//第一、获取连接(只到数据库在什么地方)
//第二、打开连接 open(必要的用户名和密码)
//第三、获取字符集 ResultSet(类似数组的数据存储对象),
//第四、显示数据
//第五、关闭数据集、关闭连接
//创建个连接对象
_ConnectionPtr m_pConnection;
//对连接进行初始化
CoInitialize(NULL);
//---------------------------------------------------------------------------------
//第一步、获取连接
//---------------------------------------------------------------------------------
//同过连接(Connection)创建并获取一个数据库连接实例,
//也可以把他看成句柄(电影门票)有里他就有资格使用数据库里的资源了 呵呵
m_pConnection.CreateInstance(__uuidof(Connection));
// 又于在数据库连接的时候有有可能会出现错误,比如数据源设置或用户名 密码错误等
//所以使用try{....}catch(){...}捕获try{}里的异常(错误)
//并把这些异常放到_com_error e 这个变量里,我们可以同过他获取错误的信息
//并且,在出错的时候程序一定回运行catch(){....}里的东西,我们看到如果连接错误的时候
//会执行cout<<"数据库连接失败,确认数据库mydb.mdb是否在当前路径下!"<<endl;
// return FALSE; 之后推出程序 。如果不加try的话可以在程序出错的时候造成死机
//所以,try也可以看成一种出错的处理(异常处理)
try
{ //---------------------------------------------------------------------------------
//第二步、打开连接 参数用 ; 分开
//---------------------------------------------------------------------------------
//第一个是Provider=Microsoft.Jet.OLEDB.4.0; access的厂商
//Data Source=mydb.mdb","","",adModeUnknown 数据库名称 , 用户名(空) ,密码(空), 缺省连接模式
//对于该参数:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (1)
/*adModeUnknown:缺省。当前的许可权未设置
adModeRead:只读
adModeWrite:只写
adModeReadWrite:可以读写
adModeShareDenyRead:阻止其它Connection对象以读权限打开连接
adModeShareDenyWrite:阻止其它Connection对象以写权限打开连接
adModeShareExclusive:阻止其它Connection对象打开连接
adModeShareDenyNone:允许其它程序或对象以任何权限建立连接
*/
//通过这个语句我们的数据库连接真正得到实现了,m_pConnection有了内容了(被附值了)
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\/mydb.mdb","","",adModeUnknown);
}
catch(_com_error e) //捕捉异常
剩余5页未读,继续阅读

- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- java毕业设计,航空销售管理系统
- java毕业设计,招生宣传管理系统
- 一个图书管理系统,java+swing
- java毕业设计,基于java敬老院管理系统
- java毕业设计,洗衣店订单管理系统
- 基于 Java 技术的医院病房舍管理系统设计与实现 基于 Java 平台的智能化病房舍病房综合管理系统开发 基于 Java 的智能化病房病房信息管理系统的设计 基于 Java 技术的智能化病房病房智能
- 网络文化对大学生思想品德的影响之社会实践.ppt
- 网络信息与国家安全.ppt
- 计算机的数据与编码.ppt
- 互联网+”大学生创新创业大赛项目计划书模版.doc
- 项目管理及六底盘损伤管理知识分析评估.pptx
- 日本政府投资项目管理体制研究.docx
- 网上在线购物系统项目管理.docx
- 通讯自动化培训—通讯自动化系统基础培训.pptx
- 网络营销你准备好了吗新生演讲.pptx
- 多目标优化实例和matlab程序.doc



- 1
- 2
前往页