weixin_46027762 2024-01-25 13:26 采纳率: 65.7%
浏览 26
已结题

c++连接sqlserver(windws和linux)

我想知道,如何通过c++连接sqlserver,有没有那种类似于oracle的occi库和pg的libpq-fe.h,我看说的最多的好像是odbc,但是odbc是一个驱动,并且在linux下,odbc好像不太好运行。

  • 写回答

18条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-01-25 13:27
    关注
    获得0.60元问题酬金

    引自免费微信小程序:皆我百晓生

    问题:如何通过C++连接SQL Server,并解决在Windows和Linux下的问题?

    1. 连接SQL Server的方法: 在C++中,你可以使用ODBC(Open Database Connectivity)来连接SQL Server。ODBC是一种应用程序接口,用于连接各种数据库。以下是使用ODBC连接SQL Server的步骤:

    连接SQL Server的步骤:

    1. 安装SQL Server ODBC Driver:在Windows上连接SQL Server,需要先安装SQL Server ODBC驱动程序。你可以从Microsoft官网下载并安装驱动程序。

    2. 安装ODBC库:在C++中使用ODBC,你需要安装ODBC库。对于Windows,你可以使用Microsoft ODBC Driver for SQL Server。对于Linux,常用的ODBC库有unixODBC。

    3. 编写C++代码:在你的C++代码中,你需要调用ODBC API来连接SQL Server。以下是一个连接SQL Server并执行查询的简单示例:

    #include <sql.h>
    #include <sqlext.h>
    #include <iostream>
    
    int main() {
        SQLHENV env; // Environment handle
        SQLHDBC dbc; // Connection handle
        SQLCHAR* connStr = (SQLCHAR*)"DRIVER={ODBC Driver 17 for SQL Server};SERVER=your_server_name;DATABASE=your_database;UID=your_username;PWD=your_password";
    
        // Allocate environment handle
        SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
        SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
    
        // Allocate connection handle
        SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
    
        // Establish connection to the SQL Server
        SQLDriverConnect(dbc, NULL, connStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
    
        // Execute a simple query
        SQLCHAR* query = (SQLCHAR*)"SELECT * FROM your_table";
        SQLExecDirect(dbc, query, SQL_NTS);
    
        // Fetch and print results
        SQLCHAR result[256];
        SQLLEN indicator;
        while (SQLFetch(dbc) == SQL_SUCCESS) {
            SQLGetData(dbc, 1, SQL_CHAR, result, sizeof(result), &indicator);
            std::cout << result << std::endl;
        }
    
        // Clean up resources
        SQLFreeHandle(SQL_HANDLE_STMT, dbc);
        SQLDisconnect(dbc);
        SQLFreeHandle(SQL_HANDLE_DBC, dbc);
        SQLFreeHandle(SQL_HANDLE_ENV, env);
    
        return 0;
    }
    

    请注意,上述代码中的your_server_nameyour_databaseyour_usernameyour_password应替换为实际的SQL Server信息。

    2. 在Windows上连接SQL Server的注意点:

    • 在Windows上,第一步是安装SQL Server ODBC驱动程序。
    • 在连接字符串中使用正确的ODBC驱动程序名称。在上述代码示例中,使用了SQL Server 2019的ODBC驱动程序,如果你的SQL Server版本不同,可能需要调整连接字符串中的驱动程序名称。

    3. 在Linux上连接SQL Server的注意点:

    • 在Linux上,你需要先安装unixODBC库,它是在Linux上连接ODBC的常用库。
    • 在连接字符串中使用正确的ODBC驱动程序名称。例如,对于SQL Server 2019,你可以使用libmsodbcsql17.so驱动程序。

    希望以上信息对你有所帮助!如果你有任何其他问题,请随时提问。

    评论

报告相同问题?

问题事件

  • 系统已结题 2月2日
  • 创建了问题 1月25日

悬赏问题

  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题