欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > Cmakelist.txt之win-odbc-mysql

Cmakelist.txt之win-odbc-mysql

2025/2/24 13:25:22 来源:https://blog.csdn.net/qq_52646857/article/details/143965507  浏览:    关键词:Cmakelist.txt之win-odbc-mysql

1.环境

1.1 下载

1.2 配置

2.cmakelist.txt

cmake_minimum_required(VERSION 3.16)project(ODBC LANGUAGES CXX)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)add_executable(ODBC main.cpp)# include_directories可加
# 链接odbc32库
target_link_libraries(ODBC odbc32)include(GNUInstallDirs)
install(TARGETS ODBCLIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

3.测试代码

#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <iostream>int main() {SQLHENV henv;SQLHDBC hdbc;SQLHSTMT hstmt;SQLRETURN ret;// 分配环境句柄ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);if (ret!= SQL_SUCCESS && ret!= SQL_SUCCESS_WITH_INFO) {std::cerr << "SQLAllocHandle (ENV) failed" << std::endl;return 1;}// 设置环境属性ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);if (ret!= SQL_SUCCESS && ret!= SQL_SUCCESS_WITH_INFO) {std::cerr << "SQLSetEnvAttr failed" << std::endl;SQLFreeHandle(SQL_HANDLE_ENV, henv);return 1;}// 分配连接句柄ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);if (ret!= SQL_SUCCESS && ret!= SQL_SUCCESS_WITH_INFO) {std::cerr << "SQLAllocHandle (DBC) failed" << std::endl;SQLFreeHandle(SQL_HANDLE_ENV, henv);return 1;}// 连接到数据库ret = SQLConnect(hdbc, (SQLCHAR*)"test_odbc_mysql", SQL_NTS, (SQLCHAR*)"root", SQL_NTS, (SQLCHAR*)"123456", SQL_NTS);if (ret!= SQL_SUCCESS && ret!= SQL_SUCCESS_WITH_INFO) {std::cerr << "SQLConnect failed" << std::endl;SQLFreeHandle(SQL_HANDLE_DBC, hdbc);SQLFreeHandle(SQL_HANDLE_ENV, henv);return 1;}// 分配语句句柄ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);if (ret!= SQL_SUCCESS && ret!= SQL_SUCCESS_WITH_INFO) {std::cerr << "SQLAllocHandle (STMT) failed" << std::endl;SQLDisconnect(hdbc);SQLFreeHandle(SQL_HANDLE_DBC, hdbc);SQLFreeHandle(SQL_HANDLE_ENV, henv);return 1;}// 执行查询语句ret = SQLExecDirect(hstmt, (SQLCHAR*)"SELECT * FROM tb_user", SQL_NTS);if (ret!= SQL_SUCCESS && ret!= SQL_SUCCESS_WITH_INFO) {std::cerr << "SQLExecDirect failed" << std::endl;SQLFreeHandle(SQL_HANDLE_STMT, hstmt);SQLDisconnect(hdbc);SQLFreeHandle(SQL_HANDLE_DBC, hdbc);SQLFreeHandle(SQL_HANDLE_ENV, henv);return 1;}// 处理结果集(这里简单打印)SQLSMALLINT numCols;SQLNumResultCols(hstmt, &numCols);// 处理结果集--中文打印不了SQLCHAR buffer[1024];SQLLEN cbBuffer;while (SQLFetch(hstmt) == SQL_SUCCESS) {for (SQLSMALLINT i = 1; i <= numCols; i++) {SQLGetData(hstmt, i, SQL_C_CHAR, buffer, sizeof(buffer), &cbBuffer);std::cout << buffer << " ";}std::cout << std::endl;}// 释放语句句柄SQLFreeHandle(SQL_HANDLE_STMT, hstmt);// 断开连接SQLDisconnect(hdbc);// 释放连接句柄SQLFreeHandle(SQL_HANDLE_DBC, hdbc);// 释放环境句柄SQLFreeHandle(SQL_HANDLE_ENV, henv);return 0;
}

4.结果

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词