C++使用ADO连接Access数据库方法
在程序的开始,首先导入所需要的库:#import “c:\program files\common files\system\ado\msado15.dll” no_namespace rename(“EOF”, “adoEOF”) ,这里重命名EOF是必要的,因为典型的VC应用都已经定义了EOF作为常数-1。
参考:https://blog.csdn.net/flywithmj/article/details/7346764
#include <sql.h> //数据库头文件
#include <sqlext.h>
#include <odbcinst.h>
#include <iostream>
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")BOOL bConn;
bConn=SQLConfigDataSource(NULL, ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)", ("CREATE_DB="+mdbName+" General\0").c_str()); //创建.mdb文件
if(!bConn)std::cout<<"connect failed!!"<<std::endl;
Initialize(NULL); //初始化OLE/COM库环境//在引入ado并初始化成功com库后,就可以使用智能指针了_ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset; HRESULT hr;try{hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象if(SUCCEEDED(hr)){ hr = m_pConnection->Open(("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+"数据库文件路径如C:\\yyyy\\666.mdb").c_str(),"","",adModeUnknown); //access2003// hr = m_pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=test.accdb","","",adModeUnknown); //access2007printf("成功连接数据库\n");}}catch(_com_error e)///捕捉异常{ printf("连接数据库失败!\n");ogde::util::Log::getDefaultInstance()->addErrorInfo(mdbPath,"","连接数据库失败!");return 0;}m_pRecordset.CreateInstance(__uuidof(Recordset)); //实例化结果集对象 try { _variant_t ra;std::string sql="CREATE TABLE "+"表名"+"(";for(int i=0,sum=vec.size();i<sum;++i){if(i!=0)sql=sql+",";sql=sql+vec[i].mdbField+" TEXT";}sql=sql.append(")");if(!m_pConnection->Execute(sql.c_str(),&ra,adCmdText)) {std::cout<<"创建表失败";ogde::util::Log::getDefaultInstance()->addErrorInfo(layerName,"","创建表失败");return false;}} catch(_com_error* e) { wprintf((const wchar_t *)(e->ErrorMessage())); if(m_pConnection->State) { m_pConnection->Close(); m_pConnection= NULL; }CoUninitialize();return 0; }
Access数据库不支持事务操作,可以使用ADO类来实现类似事务操作,不过效率也不高。如果需要导入或者导出大量数据可以试试
std::string sql="INSERT INTO "+"表名"+" SELECT * FROM [Text;DATABASE="+"txt路径如 C:\\yyyy"+"].文件名如Test.txt";
m_pConnection->Execute(sql.c_str(),&ra,adCmdText);
可以将txt内容导入到数据库。 文本第一行是字段名,列之间用,分开。
C++使用ADO连接Access数据库方法相关推荐
- ADO连接Access数据库,Access版本问题
最近做项目需要用到Access数据库,采用ADO连接Access数据库,需要注意的地方如下: 1.程序初始化的时候,需要初始化OLE库 // 初始化 OLE 库 if (!AfxOleInit()) ...
- VS2013下MFC通过ADO连接Access数据库
(VS2013+Access2003) 1. 新建一个基于对话框的MFC项目:ADO_Access0306 在stdafx.h头文件末尾添加(网上有说在某个#include后面的添加的,也有说在合适位 ...
- VC6.0 通过ado连接access数据库
小实例 http://download.csdn.net/detail/cxq_1993/8985731 ADO连接数据库 1.COM库的初始化 我们可以使用AfxOleInit()来初始化COM库, ...
- VS2019通过ADO连接access数据库(详细)
1.建立数据库,在控制面板->管理工具->数据源中添加数据源. 在系统DSN中点击添加 选择 Microsoft Access Driver(*.mdb) 自行对数据源进行命名,并点击选 ...
- ADO连接ACCESS数据库
使用ADOX,需要引入ADOX的动态链接库msadox.dll,首先在stdafx.h中加入如下语句: #import "c:/program files/common files/syst ...
- asp.net 连接access数据库方法
在 Web.Config 中配置 Access 数据库驱动和数据库文件名称. 请看代码 <appSettings> <add key="DBDriver" val ...
- vba 连接access数据库 方法二
Sub 连接数据库() '第一步,引用ADO 工具,工具->引用->microsoft ActiveX Data Objects 6.1 Library '第二步,创建连接对象 '1 .声 ...
- mfc连接oracle12c,MFC ADO连接Oracle12c数据库 类库文件
Stdafx.h Stdafx.h libado.h libado.h libado.cpp libado.cpp 参考网址如下:http://www.cnblogs.com/livewithnore ...
- php如何连接access,php如何连接access数据库代码
php教程 连接access数据库教程代码 下面提供三种php连接access数据库方法,一种是利用php的pdo,一种是odbc,com接口来与access数据库连接哦. *///利用pdo与acc ...
- 使用VC连接Access数据库的两种方法
以前的时候用VC写了两种连接Access数据库的方法,为了方便以后查找把这两种方法做一下简单的介绍.Windows平台的数据接口标准有ODBC.OLE DB.ADO和Borland的BDE接口,ODB ...
最新文章
- 赌5毛钱,你解不出这道Google面试题
- 基于表单的网站身份验证的权威指南[关闭]
- OPhone2.0应该重在中文应用体验
- leetcode 58. 最后一个单词的长度(C语言)
- JavaScript 读取地址栏参数
- String 转Clob
- myeclipse服务器未能创建视图:抛出意外异常。
- 获取浏览器选中文本并操作
- pscc2019滤镜抽出_「PS-CC2019新版教程」魔棒工具,让你一秒钟完成抠图-基础篇
- 最小二乘(OLS)回归法及其在R中的…
- 经典数学问题——三门问题(数据分析面试题)
- name = STXingkai/OT, rootname = STXingkai/OT LaTex Package fontspec Error报错解决
- Leetcode LCP 17. 速算机器人
- java字符串进行中文、特殊字符编码
- CSS3选择器(选择符)
- 电商系统-提交订单并发处理
- Oracle索引(Index)创建使用
- 交通运输大数据发展特点、政策、应用及趋势 | 交通运输部科学研究院黄莉莉
- 真兰仪表通过深交所注册:拟募资17.4亿 上半年净利下降27%
- GBDT(MART)概念简介