Access数据库连接查询(C++篇)

这篇具有很好参考价值的文章主要介绍了Access数据库连接查询(C++篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

Microsoft Office Access是微软发布的一款关系型数据库;
起初是以".mdb"为后缀的文件,支撑其操作的数据库引擎是Microsoft.Jet.OLEDB;随着时间的发展,后面以".access"为后缀的文件,数据库引擎也升级成了Microsoft.ACE.OLEDB;

创建项目

可创建任意项目,此处直接上截图
Access数据库连接查询(C++篇)
Access数据库连接查询(C++篇)
Access数据库连接查询(C++篇)
Access数据库连接查询(C++篇)
Access数据库连接查询(C++篇)

访问数据库

步骤一:导入动态链接库:msado15.dll

此文件再安装有office的电脑上基本都有;默认路径为:C:\Program Files (x86)\Common Files\System\ado;找到此文件后,要么直接路过绝对路径导入,要么直接将masdo15.dll拷贝到项目路径,通过相对路径导入;
(ps:有可能编译器会在#import处报错,但不止真的错,不妨继续执行,说不定会有惊喜的;)

#include <stdio.h>
#import "DLL\msado15.dll"  no_namespace  rename ("EOF", "adoEOF")  

步骤二:选用数据库引擎打开数据库

int main()
{
	_ConnectionPtr pConnection;		//连接类
	CoInitialize(NULL);					//初始化OLE/COM库环境  在引入ado并初始化成功com库后,就可以使用智能指针了  
	try
	{
		HRESULT hr = pConnection.CreateInstance("ADODB.Connection");//创建Connection对象  
		if (SUCCEEDED(hr))
		{
			//数据库引擎1:Microsoft.ACE.OLEDB.12.0      访问 *.access数据库,无密码
			//hr = pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=1-mydb.accdb;Persist Security Info=False ", "", "", adModeUnknown);
			
			//数据库引擎2:Microsoft.Jet.OLEDB.4.0       访问*.mdb数据库,有密码
			hr = pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB\\my.mdb;Persist Security Info=True;Jet OLEDB:Database Password=123456", "", "", adModeUnknown);
		}
	}
	catch (_com_error e)
	{
		printf("数据库连接失败\n");
		return false;
	}
	printf("数据库连接成功\n");
	return true;
}

步骤三:对数据库进行增,删,改,查操作

Access数据库依旧使用SQL语句对数据库进行操作,所以说增删改查的操作也是基于SQL语法进行的。

    char strSQL[] = "SELECT * FROM T1";
	_RecordsetPtr pRecordset;							//查询结果类
	pRecordset.CreateInstance(__uuidof(Recordset));		//实例化结果集对象     执行sql语句    
	try
	{
		if (pRecordset->State)
		{
			pRecordset->Close();
		}
		pRecordset->Open(strSQL, pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
	}
	catch (_com_error* e)
	{
		printf("执行sql语句失败\n")
		if (pConnection->State)
		{
			pConnection->Close();
			pConnection = NULL;
		}
		CoUninitialize();
		return false;
	}
	printf("执行sql语句成功\n")

步骤四:显示数据库信息

显示数据库信息的格式主要是根据自己需求;获取数据库表格的记录名等,都有相应的接口,需要我们自己去调用;

try
	{
		if (pRecordset->BOF)
		{
			printf("查询的表格数据为空!\n");
			if (pConnection->State)
			{
				pRecordset->Close();
				pRecordset = NULL;
				pConnection->Close();
				pConnection = NULL;
			}
			CoUninitialize();
			return true;
		}
		printf("数据库的信息:\n");
		
		pRecordset->MoveFirst();					//游标指向首记录
		_variant_t var[3]; 							//从结果集中取出的数据放到var中  
		char* t1[3];
		while (!pRecordset->adoEOF)
		{
			var[0] = pRecordset->GetCollect("F1");
			if (var[0].vt != VT_NULL)
			{
				t1[0] = _com_util::ConvertBSTRToString((_bstr_t)var[0]);
			}
			printf(t1[0]);
			printf("\t");
			var[1] = pRecordset->GetCollect("F2");
			if (var[1].vt != VT_NULL)
			{
				t1[1] = _com_util::ConvertBSTRToString((_bstr_t)var[1]);
			}
			printf(t1[1]);
			printf("\t");
			var[2] = pRecordset->GetCollect("F3");
			if (var[2].vt != VT_NULL)
			{
				t1[2] = _com_util::ConvertBSTRToString((_bstr_t)var[2]);
			}
			printf(t1[2]);
			printf("\n");
			pRecordset->MoveNext();				//将游标指向下一行
		}
	}
	catch (_com_error* e)
	{
		cout << e->ErrorMessage() << endl;
	}

步骤五:关闭数据库

数据库使用完成后,需要断开数据库,防止连接线程过多导致程序性能下降;

if (pConnection->State)
	{
		pRecordset->Close();
		pRecordset = NULL;
		pConnection->Close();
		pConnection = NULL;
	}
	CoUninitialize();

总结

访问Access数据库,主要的思路是使用API,任何数据库的调用都有对应的API供我们使用,它也不列外。然后是数据库引擎,即打开数据库的具体接口,与具体数据库连接;剩下的就是结合SQL语句对数据库具体的增删改查操作了;文章来源地址https://www.toymoban.com/news/detail-468707.html

到了这里,关于Access数据库连接查询(C++篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Microsoft Access database engine 2010 (Chinese (Simplif... 您不能安装64位版本的Microsoft Access 2010 数据库引擎

    问题:Microsoft Access database engine 2010 (Chinese (Simplif… 您不能安装64位版本的Microsoft Access 2010 数据库引擎,因为您当前已安装32位的offce 产品。若要安装64位的Microsoft Access 2010 数据库引擎,需要先删除32位的 ofce 产品安装。卸载以下产品后,重新运行安装程序以便安装64位版本的

    2024年02月11日
    浏览(32)
  • VBA 连接ACCESS数据库

    在外部进行变量声明 如果报错:用户定义类型未定义,可能是未引用所虚的外部库,在工具-引用中添加 连接数据库 ,本例通过按钮的click事件连接,并将数据库内容填到单元格中 rs.Open SQL, con, adOpenKeyset, adLockOptimistic 中第三和第四个参数是限制记录是否可读写和锁定的,具

    2024年02月12日
    浏览(39)
  • MFC 使用 ADO技术连接Access数据库

    学了很久的MFC,于是想着使用MFC的ADO技术连接Access数据库。 记录一下,以备后面复习。 1.首先需要了解MDB数据库文件,本次示例代码连接的是MDB数据库文件。*.MDB文件是(Microsoft Database) 文件的缩写,是Access数据库文件的一种格式。就像是Word文档的.doc文件一样。 2.下面开始讲一

    2024年02月05日
    浏览(37)
  • 使用QT连接access数据库详解(清晰、透彻)

    第一步、查看我们自己电脑上access数据库驱动是32位的还是64位的,查看方法:通过odbc数据源管理器进行查看,odbc数据源管理器分为32位和64位: 32位odbc数据源管理器查看如下:注意是syswow64文件夹中  下面图片证明:access数据库驱动是32位的:  我们也可以打开64位的odbc数据

    2024年02月06日
    浏览(76)
  • 【数据库Microsoft SQL Server】实验一 数据库的定义与单表查询

    一、实验目的 1.要求学生熟悉掌握在DBMS中用SQL语言定义数据库、表、主码及外码。 2.熟悉关系数据库中常用数据类型,为关系表各属性定义合理的数据类型。 3.在建立好的数据库表中输入部分虚拟数据,实现基于单表的sql查询并分析查询结果。 二、实验环境与实验准备工作

    2024年02月05日
    浏览(43)
  • pyodbc读取.mdb文件时出现[ODBC Microsoft Access Driver] 网络访问已中断。请关闭数据库.....解决方法

    在使用pyodbc读取.mdb文件时出现下面的错误 : ODBC Microsoft Access Driver] 网络访问已中断。若要继续,请关闭数据库,然后再将其打开。 (-1022) (SQLDriverConnect) 网上找了很多方法,最后通过下面的方法解决了,就是 安装64位的ODBC 驱动器 。 1.安装驱动: 下载地址: https://www.microsof

    2024年02月12日
    浏览(40)
  • MyBatis 查询数据库、持久层框架简介

    MyBatis是一款优秀的持久层框架,支持自定义SQL、存储过程以及高级映射。它通过简单的XML或注解来配置和映射原始类型、接口和Java POJO为数据库中的记录。

    2024年02月12日
    浏览(42)
  • python连接Microsoft SQL Server 数据库

      python代码  

    2024年02月11日
    浏览(36)
  • ⑧【MySQL】数据库查询:内连接、外连接、自连接、子查询、多表查询

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 多表关系 : 一对一 :在 任意一方 加入外键,关联另一方的主键,并设置外键为唯一(UNIQUE)。 一对多(

    2024年02月05日
    浏览(38)
  • Mysql查询数据库连接状态及连接信息

    使用MySQL时,需要了解当前数据库的情况,例如当前的数据库大小、字符集、用户等等。下面总结了一些查看数据库相关信息的命令 查看显示所有数据库 查看当前使用的数据库 查看数据库使用端口 查看当前数据库大小 例如,我要查看INVOICE数据库的大小,那么可以通过下面

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包