C++连接Access数据库----增删改查
1、安装ODBC(前期准备)------安装方法(自行csdn)2、C++代码(运行环境vs2019)
·
1、安装ODBC(前期准备)------安装方法(安装ODBC方法-CSDN博客
2、C++代码(运行环境vs2019)
#include <iostream>
#include <string>
#include <windows.h>
#include <sqlext.h>
#include <sqltypes.h>
#include <sql.h>
int main() {
// 定义数据库连接句柄和语句句柄
SQLHANDLE hEnv; // 环境句柄
SQLHANDLE hDbc; // 数据库连接句柄
SQLHANDLE hStmt; // 语句句柄
// 初始化环境句柄
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
// 初始化数据库连接句柄
SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc);
// 连接数据库
SQLCHAR* connStr = (SQLCHAR*)"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\Users\\*****\\Desktop\\country.accdb"; //数据库路径
SQLRETURN ret = SQLDriverConnect(hDbc, NULL, connStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {
std::cout << "Connected to the database." << std::endl;
// 初始化语句句柄
SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);
//执行查询语句
SQLCHAR* selectQuery = (SQLCHAR*)"SELECT * FROM country";
ret = SQLExecDirect(hStmt, selectQuery, SQL_NTS);
//处理查询结果
SQLCHAR arrID[256];
while (SQLFetch(hStmt) == SQL_SUCCESS) {
SQLGetData(hStmt, 1, SQL_C_CHAR, arrID, sizeof(arrID), NULL);
std::cout << "编号: " << arrID << std::endl;
}
/*
在某些数据库管理系统中,
游标的默认位置可能会影响后续的更新操作
*/
// 关闭结果集的游标
SQLCloseCursor(hStmt);
// 插入数据
SQLCHAR* insertQuery = (SQLCHAR*)"INSERT INTO country (编号, 国家) VALUES (14, '泰国')";
ret = SQLExecDirect(hStmt, insertQuery, SQL_NTS);
std::cout << "Data inserted." << std::endl;
// 更新数据
SQLCHAR* updateQuery = (SQLCHAR*)"UPDATE country SET 国家 = '美国' WHERE 编号 = 14";
ret = SQLExecDirect(hStmt, updateQuery, SQL_NTS);
std::cout << "Data updated." << std::endl;
// 删除数据
SQLCHAR* deleteQuery = (SQLCHAR*)"DELETE FROM country WHERE 编号 = 14";
ret = SQLExecDirect(hStmt, deleteQuery, SQL_NTS);
std::cout << "Data deleted." << std::endl;
// 释放资源
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
SQLDisconnect(hDbc);
}
else {
std::cout << "Failed to connect to the database." << std::endl;
}
// 释放句柄
SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
return 0;
}
代码中用到的数据库:

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)