以下是一个使用ODBC链接MySQL数据库的示例代码:
#include <iostream>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
int main() {
SQLHENV henv; // ODBC环境句柄
SQLHDBC hdbc; // 数据库连接句柄
SQLRETURN retcode;
// 初始化ODBC环境
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);
// 配置数据库连接信息
const char* connectionStr = "DRIVER={MySQL ODBC 8.0 ANSI Driver};SERVER=localhost;DATABASE=mydatabase;USER=user;PASSWORD=password;";
// 连接到数据库
retcode = SQLDriverConnect(hdbc, NULL,
(SQLCHAR*)connectionStr, SQL_NTS,
NULL, 0, NULL,
SQL_DRIVER_COMPLETE);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
std::cout << "连接成功!" << std::endl;
// 执行SQL查询等操作...
// 关闭数据库连接
retcode = SQLDisconnect(hdbc);
} else {
std::cout << "连接失败!" << std::endl;
// 输出错误信息
if (retcode != SQL_SUCCESS_WITH_INFO) {
char sqlState[6], errMsg[1024];
SDWORD nativeError;
SWORD actualLen;
retcode = SQLGetDiagRec(SQL_HANDLE_DBC, hdbc, 1,
(SQLCHAR*)sqlState, &nativeError,
(SQLCHAR*)errMsg, sizeof(errMsg), &actualLen);
std::cout << "错误:" << errMsg << std::endl;
}
}
// 释放数据库连接句柄
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
// 释放ODBC环境句柄
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
请确保已安装合适的MySQL ODBC驱动程序,并根据自己的数据库连接信息进行相应配置。
内容由零声教学AI助手提供,问题来源于学员提问




