c++ odbc mysql
时间: 2023-07-23 11:04:22 浏览: 153
要在 C++ 中使用 ODBC 连接 MySQL 数据库,需要进行以下步骤:
1. 安装 MySQL Connector/ODBC 驱动程序。
2. 在 C++ 代码中包含 ODBC 头文件和链接 ODBC 库。
3. 调用 ODBC API 函数连接到 MySQL 数据库。
4. 执行 SQL 查询或更新语句。
5. 处理结果集或错误信息。
下面是一个简单的示例代码:
```cpp
#include <iostream>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
using namespace std;
int main()
{
// 初始化 ODBC 环境
SQLHENV henv;
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
// 连接到 MySQL 数据库
SQLHDBC hdbc;
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
SQLCHAR connStr[] = "DRIVER={MySQL ODBC 8.0 ANSI Driver};SERVER=localhost;DATABASE=mydb;UID=root;PWD=password;";
SQLRETURN ret = SQLDriverConnect(hdbc, NULL, connStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
// 处理连接错误
SQLCHAR sqlState[6], errMsg[SQL_MAX_MESSAGE_LENGTH];
SQLINTEGER nativeError;
SQLSMALLINT msgLen;
SQLGetDiagRec(SQL_HANDLE_DBC, hdbc, 1, sqlState, &nativeError, errMsg, SQL_MAX_MESSAGE_LENGTH, &msgLen);
cout << "Error connecting to database: " << errMsg << endl;
goto exit;
}
// 执行 SQL 查询
SQLHSTMT hstmt;
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
SQLCHAR sql[] = "SELECT * FROM mytable";
SQLExecDirect(hstmt, sql, SQL_NTS);
// 处理结果集
SQLCHAR name[100], address[100];
int age;
while (SQLFetch(hstmt) == SQL_SUCCESS) {
SQLGetData(hstmt, 1, SQL_C_CHAR, name, 100, NULL);
SQLGetData(hstmt, 2, SQL_C_CHAR, address, 100, NULL);
SQLGetData(hstmt, 3, SQL_C_LONG, &age, 0, NULL);
cout << "Name: " << name << ", Address: " << address << ", Age: " << age << endl;
}
exit:
// 释放 ODBC 资源
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
```
注意,以上示例代码仅供参考,具体实现还需要根据自己的需求进行调整和修改。
阅读全文