【VC++】 【MFC】 .mdb文件;数据库连接;Microsoft Access 2016 数据库引擎

介绍:简单的数据库操作,读取、写入、删除即可。
目的:操作简单,无复杂的环境、头文件、程序安装等
编译器:VScode 2020
操作系统:Windows 10 64位

代码

连接并读取数据库

#include <afxdb.h> //操作数据库的头文件

CDatabase m_db;       // 数据库连接对象  
CRecordset m_rs(&m_db);      // 记录集对象

CString strConnect = _T("Driver={Microsoft Access Driver (*.mdb, *.accdb)};\
DBQ=path to mdb file"); //数据源信息
m_db.OpenEx(strConnect, CDatabase::noOdbcDialog);
CString strSQL = _T("SELECT * FROM YourTableName"); // SQL操作
m_rs.Open(CRecordset::snapshot, strSQL, CRecordset::readOnly);

while (!m_rs.IsEOF()) // EOF表示记录集的结尾  
{
	// 假设你的表有一个名为"FieldName"的字段  
	CString strFieldName;
	m_rs.GetFieldValue(_T("FieldName"), strFieldName);

	// 在这里处理字段值,例如显示在界面上或进行其他操作  
	AfxMessageBox(strFieldName); // 仅作为示例,实际使用中可能需要其他处理方式  

	m_rs.MoveNext(); // 移动到下一条记录  
}

连接不成功

  • 未识别到数据源且未识别到数据源驱动
  • 数据源和程序平台不匹配
  • 弹出选择数据源的窗口

最终确认,遇到的问题是系统为64位,而用户DSN为32位,仅有SQL驱动程序,无法匹配。

查看方法:

控制面板> 管理工具 > ODBC 数据源(64 位)

解决过程

下载64位MS Acess Database驱动程序

https://www.microsoft.com/zh-cn/download/details.aspx?id=54920
根据提示进行下载安装。

【选】安装驱动时,提示删除相关32位驱动程序

卸载office 2010

控制面板> 程序和功能> 搜索2010> 卸载相关的软件

卸载Office 16 Click-to-Run Extensibility Component

参考https://blog.csdn.net/shoppingend/article/details/121868814

win+R, 输入Installer
在详细信息的信息列表栏 右键添加 在最下方 主题 选项
根据主题选项的信息, 查找到Click-to-Run Extensibility Component的Installer
右键 该 MSI程序, 选择卸载Click-to-Run Extensibility Component,只卸载这一项

再安装64位驱动,安装成功。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要使用C++语言访问Microsoft Access数据库(.mdb文件),你可以使用ODBC(Open Database Connectivity)来建立与数据库的连接。以下是一个简单的示例代码: ``` #include <iostream> #include <windows.h> #include <sqlext.h> #include <sqltypes.h> #include <sql.h> int main() { SQLHENV henv; SQLHDBC hdbc; SQLHSTMT hstmt; SQLRETURN retcode; // 初始化环境句柄 retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0); // 初始化连接句柄 retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); // 连接数据库 retcode = SQLDriverConnect(hdbc, NULL, (SQLCHAR*)"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=path_to_your_mdb_file.mdb;", SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE); // 检查连接是否成功 if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) { std::cout << "Connected to database." << std::endl; // 执行SQL查询 retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); retcode = SQLExecDirect(hstmt, (SQLCHAR*)"SELECT * FROM YourTable", SQL_NTS); // 处理查询结果 if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) { // 读取数据 SQLCHAR colData[255]; while (SQLFetch(hstmt) == SQL_SUCCESS) { SQLGetData(hstmt, 1, SQL_CHAR, colData, sizeof(colData), NULL); std::cout << colData << std::endl; } } else { std::cout << "Error executing SQL query." << std::endl; } // 释放资源 SQLFreeHandle(SQL_HANDLE_STMT, hstmt); SQLDisconnect(hdbc); } else { std::cout << "Failed to connect to database." << std::endl; } // 释放资源 SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0; } ``` 请替换代码中的`path_to_your_mdb_file.mdb`为你的mdb文件的路径。该示例代码连接到指定的数据库文件,并执行了一个简单的查询,并将结果打印到控制台。你可以根据自己的需求修改代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值