一、可视化工具
我们都知道oracle数据库的可视化工具有:PLSQL Developer、navicat(支持包括oracle的大部分数据库)等,Access数据库的可视化工具是:Microsoft Access,我们安装好微软的office就会自带Microsoft Access,下面提供navicat和Microsoft Office的下载链接,都是破解版的,自带破解软件:
navicat下载地址:https://pan.baidu.com/s/1zZndNll-dcCr5mLbh_MGYA 提取码:1234
Microsoft Access下载地址:https://pan.baidu.com/s/1Rfsbs4U3cZqVgxecb6KwYQ 提取码:1234
为了更好所见即所得的操作Access数据库,我们安装上面的Microsoft Access数据库。
二、安装Access数据库驱动
如果你的程序是32位的,需要安装32位的Access数据库驱动,如果你的程序是64位的,需要安装64位的数据库驱动。如何判断自己的程序是32位还是64位,我们只需要看一下"配置管理器"里面"平台"是Win32还是X64,如下图则程序是32位的:
下面提供Access驱动的下载地址,包括32位和64位两个版本:
https://pan.baidu.com/s/1UbO6ABrKSsSJ78i3_xE1aA 提取码:1234
三、数据库连接字符串
在使用C++操作数据库 增删改查 之前,首先要连接上数据库,这里我们使用ADO来连接,连接字符串很重要,通过驱动类型来确定连接字符串的格式,我们可以通过:控制面板--管理工具--ODBC数据源(分为32位和64位)来进行查看驱动类型:
(1)用32位的数据源管理程序查看32位驱动的类型,如下图:
连接字符串格式为:zzc1.mdb要换成你自己的数据库文件
_bstr_t StrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\zzc1.mdb"
(2)用64位的数据源管理程序查看64位驱动的类型,如下图:
连接字符串格式为:zzc1.mdb要换成你自己的数据库文件
_bstr_t StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\zzc1.mdb;Persist Security Info=False;";
四、使用简单的查询操作进行测试
1、使用Microsoft Access可视化工具创建一个简单的表:
2、测试代码:
// access_test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <string>
using namespace std;
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" rename_namespace("ADOCG") rename("EOF", "EndOfFile")
using namespace ADOCG;
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
m_pConnection.CreateInstance(__uuidof(Connection));
//_bstr_t StrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\zzc1.mdb";
_bstr_t StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\zzc1.mdb;Persist Security Info=False;";
try {
m_pConnection->Open(StrConn, "", "", adModeUnknown);
}
catch (_com_error &e)
{
_bstr_t str = e.Source();
str = e.Description();
}
printf("数据库连接成功\r\n");
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open("select * from student", m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adModeUnknown);
_variant_t var;
int curItem = 0;
int id;
string name;
bool man = false;
while (!m_pRecordset->GetEndOfFile())
{
var = m_pRecordset->GetCollect(_T("name"));
if (var.vt != NULL)
name = _bstr_t(var);
var = m_pRecordset->GetCollect(_T("id"));
if (var.vt != NULL)
id = atoi(_bstr_t(var));
var = m_pRecordset->GetCollect(_T("isman"));
if (var.vt != NULL)
man = var.boolVal;
printf("id=%d,name=%s, man = %d\r\n",id, name.c_str(), man);
m_pRecordset->MoveNext();
curItem++;
}
system("pause");
return 0;
}