简介
Microsoft Office Access是微软发布的一款关系型数据库;
起初是以".mdb"为后缀的文件,支撑其操作的数据库引擎是Microsoft.Jet.OLEDB;随着时间的发展,后面以".access"为后缀的文件,数据库引擎也升级成了Microsoft.ACE.OLEDB;
创建项目
可创建任意项目,此处直接上截图
访问数据库
步骤一:导入动态链接库: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;
}
步骤五:关闭数据库
数据库使用完成后,需要断开数据库,防止连接线程过多导致程序性能下降;文章来源:https://www.toymoban.com/news/detail-468707.html
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模板网!