c++ 链接mssql

在 C++ 中链接 Microsoft SQL Server 可以通过多种方式实现,以下是一些常见的方法:

  1. 使用 ODBC(Open Database Connectivity)
    • 首先,需要安装 ODBC 驱动程序。
    • 然后,使用标准的 ODBC API 来连接和操作数据库。

cpp

#include <iostream>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>

int main() {
    SQLHENV env;
    SQLHDBC dbc;
    SQLRETURN ret;

    // 分配环境句柄
    ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
    if ((ret!= SQL_SUCCESS) && (ret!= SQL_SUCCESS_WITH_INFO)) {
        std::cerr << "Failed to allocate environment handle" << std::endl;
        return 1;
    }

    // 设置环境属性为 ODBC 版本 3
    ret = SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
    if ((ret!= SQL_SUCCESS) && (ret!= SQL_SUCCESS_WITH_INFO)) {
        std::cerr << "Failed to set ODBC version" << std::endl;
        SQLFreeHandle(SQL_HANDLE_ENV, env);
        return 1;
    }

    // 分配连接句柄
    ret = SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
    if ((ret!= SQL_SUCCESS) && (ret!= SQL_SUCCESS_WITH_INFO)) {
        std::cerr << "Failed to allocate connection handle" << std::endl;
        SQLFreeHandle(SQL_HANDLE_ENV, env);
        return 1;
    }

    // 连接数据库
    SQLCHAR connStrIn[] = "DRIVER={SQL Server};SERVER=your_server_name;DATABASE=your_database_name;UID=your_user_id;PWD=your_password";
    SQLCHAR* connStr = connStrIn;
    ret = SQLDriverConnect(dbc, NULL, connStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
    if ((ret!= SQL_SUCCESS) && (ret!= SQL_SUCCESS_WITH_INFO)) {
        std::cerr << "Failed to connect to database" << std::endl;
        SQLFreeHandle(SQL_HANDLE_DBC, dbc);
        SQLFreeHandle(SQL_HANDLE_ENV, env);
        return 1;
    }

    // 执行数据库操作...

    // 断开连接
    SQLDisconnect(dbc);

    // 释放连接句柄
    SQLFreeHandle(SQL_HANDLE_DBC, dbc);

    // 释放环境句柄
    SQLFreeHandle(SQL_HANDLE_ENV, env);

    return 0;
}

  1. 使用 ADO(ActiveX Data Objects)
    • 这需要在 Windows 平台上使用,并且需要包含相关的 ADO 库和头文件。

cpp

#include <iostream>
#include <windows.h>
#include <ole2.h>
#include <adoint.h>

int main() {
    HRESULT hr;
    _ConnectionPtr pConn;

    // 初始化 COM 库
    hr = CoInitialize(NULL);
    if (FAILED(hr)) {
        std::cerr << "Failed to initialize COM library" << std::endl;
        return 1;
    }

    // 创建连接对象
    hr = pConn.CreateInstance(__uuidof(Connection));
    if (FAILED(hr)) {
        std::cerr << "Failed to create connection object" << std::endl;
        CoUninitialize();
        return 1;
    }

    // 连接数据库
    pConn->Open("Provider=SQLOLEDB;Data Source=your_server_name;Initial Catalog=your_database_name;User ID=your_user_id;Password=your_password", "", "", adConnectUnspecified);
    if (FAILED(hr)) {
        std::cerr << "Failed to connect to database" << std::endl;
        pConn->Release();
        CoUninitialize();
        return 1;
    }

    // 执行数据库操作...

    // 关闭连接
    pConn->Close();

    // 释放连接对象
    pConn->Release();

    // 反初始化 COM 库
    CoUninitialize();

    return 0;
}

  1. 使用第三方库,如 SQLAPI++
    • 首先,需要下载并安装 SQLAPI++ 库。

cpp

#include <iostream>
#include <SAConnection.h>
#include <SACommand.h>

int main() {
    SAConnection con;
    try {
        // 连接数据库
        con.Connect("your_server_name", "your_user_id", "your_password", SA_SQLServer_Client);

        // 执行数据库操作...

        // 断开连接
        con.Disconnect();
    } catch (SAException &x) {
        std::cerr << "Error: " << x.ErrText().GetMultiByteChars() << std::endl;
        return 1;
    }

    return 0;
}

请确保将 your_server_name(服务器名称)、your_database_name(数据库名称)、your_user_id(用户名)和 your_password(密码)替换为实际的值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在C语言中连接MySQL数据库,您需要使用MySQL提供的C API库。下面是连接MySQL数据库的基本步骤: 1. 首先,您需要安装MySQL数据库,并确保已设置好用户名、密码和数据库名称。 2. 在C程序中,您需要包含MySQL头文件和链接MySQL库文件。可以使用以下代码来包含头文件: ```c #include <mysql.h> ``` 3. 在程序中使用以下代码连接到MySQL数据库: ```c MYSQL *conn; conn = mysql_init(NULL); if (conn == NULL) { printf("mysql_init() failed\n"); // 错误处理 } if (mysql_real_connect(conn, "localhost", "username", "password", "database", 0, NULL, 0) == NULL) { printf("mysql_real_connect() failed\n"); // 错误处理 } ``` 在上述代码中,"localhost"是主机名,"username"是您的数据库用户名,"password"是数据库密码,"database"是数据库名称。 4. 连接成功后,您就可以执行各种MySQL查询和操作。例如: ```c if (mysql_query(conn, "SELECT * FROM table")) { printf("mysql_query() failed\n"); // 错误处理 } MYSQL_RES *result = mysql_store_result(conn); if (result == NULL) { printf("mysql_store_result() failed\n"); // 错误处理 } MYSQL_ROW row; while ((row = mysql_fetch_row(result)) != NULL) { // 处理查询结果 } mysql_free_result(result); ``` 5. 最后,使用以下代码关闭MySQL连接: ```c mysql_close(conn); ``` 请注意,上述代码只是一个简单的示例。在实际应用中,您可能需要添加更多的错误处理和其他功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值