当前位置: 首页 > news >正文

c++ 连sqlserver

//要在 C++ 中连接 SQL Server 数据库,可以使用 Microsoft 提供的 SQL Server Native Client 或者 //ODBC 驱动程序。以下是使用 SQL Server Native Client 连接数据库的基本步骤:

//1. 安装 SQL Server Native Client 驱动程序。
//2. 在 C++ 代码中包含头文件 sqlncli.h
//3. 使用 SQL Server Native Client 提供的 API 连接数据库,例如:

//cpp
#include <windows.h>
#include <sqlncli.h>

int main()
{
    // 初始化 COM 库
    CoInitialize(NULL);

    // 创建连接对象
    SQLHANDLE hConn;
    SQLAllocHandle(SQL_HANDLE_DBC, SQL_NULL_HANDLE, &hConn);

    // 连接数据库
    SQLCHAR* szConnStr = (SQLCHAR*)"DRIVER={SQL Server Native Client 11.0};SERVER=127.0.0.1;DATABASE=TestDB;UID=sa;PWD=123456";
    SQLRETURN ret = SQLDriverConnectA(hConn, NULL, szConnStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT);

    if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
    {
        // 连接成功,执行 SQL 查询
        SQLHANDLE hStmt;
        SQLAllocHandle(SQL_HANDLE_STMT, hConn, &hStmt);

        SQLCHAR* szSql = (SQLCHAR*)"SELECT * FROM TestTable";
        SQLExecDirectA(hStmt, szSql, SQL_NTS);

        // 处理查询结果
        SQLCHAR szName[256];
        SQLINTEGER nAge;
        while (SQLFetch(hStmt) == SQL_SUCCESS)
        {
            SQLGetData(hStmt, 1, SQL_C_CHAR, szName, sizeof(szName), NULL);
            SQLGetData(hStmt, 2, SQL_C_LONG, &nAge, sizeof(nAge), NULL);

            printf("Name: %s, Age: %d\n", szName, nAge);
        }

        // 释放资源
        SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
    }
    else
    {
        // 连接失败,输出错误信息
        SQLCHAR szErrorMsg[SQL_MAX_MESSAGE_LENGTH];
        SQLSMALLINT nErrorMsgLen;
        SQLGetDiagRecA(SQL_HANDLE_DBC, hConn, 1, NULL, NULL, szErrorMsg, SQL_MAX_MESSAGE_LENGTH, &nErrorMsgLen);

        printf("Connect failed: %s\n", szErrorMsg);
    }

    // 断开连接,释放资源
    SQLDisconnect(hConn);
    SQLFreeHandle(SQL_HANDLE_DBC, hConn);

    // 释放 COM 库
    CoUninitialize();

    return 0;
}
//

//上述代码中,使用 SQLDriverConnectA 函数连接数据库,其中 szConnStr 参数指定连接字符串,
//包括驱动程序名称、服务器地址、数据库名称、用户名和密码等信息。连接成功后,
//使用 SQLExecDirectA 函数执行 SQL 查询,使用 SQLGetData 函数获取查询结果。
//最后,使用 SQLDisconnect 函数断开连接,使用 SQLFreeHandle 函数释放资源。

//需要注意的是,使用 SQL Server Native Client 连接数据库需要先初始化 COM 库,
//使用 CoInitialize 函数初始化,使用 CoUninitialize 函数释放。
//另外,需要在连接字符串中指定正确的驱动程序名称和版本号,
//例如 "SQL Server Native Client 11.0" 表示 SQL Server 2012 版本的驱动程序。

http://www.lryc.cn/news/93180.html

相关文章:

  • 给钉钉的2个建议
  • STL之优先级队列(堆)的模拟实现与仿函数(8千字长文详解!)
  • 设施管理系统
  • JavaScript:获取当前日期、星期、时间 | Data对象
  • Cadence原理图快速查找元器件的方法
  • 科目二 调整座椅
  • 02.加载GDT表,进入保护模式
  • MySQL(进阶篇3.0)
  • 2023.6.8小记——嵌入式系统初识、什么是ARM架构?
  • 分布式运用之ELK企业级日志分析系统
  • 【华为OD机试真题 C语言】8、停车场车辆统计 | 机试真题+思路参考+代码解析
  • c++ MES 对接(XML、JSON、SOAP)
  • idea导入java web项目带jar
  • 【第55天|● 392.判断子序列 ● 115.不同的子序列 】
  • Dockerfile创建镜像
  • 基于 opencv 的人脸识别上课考勤系统,附源码,可作为毕业设计
  • .editorconfig 配置
  • Spring 高级依赖注入 —— Bean的延迟依赖查找功能,ObjectFactory 和 ObjectProvider
  • VSCode--Config
  • 代码随想录刷题第48天|LeetCode198打家劫舍、LeetCode213打家劫舍II、LeetCode337打家劫舍III
  • C# NTS 获取MuliiLineString中的所有线
  • CodeWhisperer插件使用体验
  • 机器学习笔记 - 多实例学习(MIL)弱监督学习
  • SQL Server 2008 定时自动备份和自动删除方法
  • 代码生成器实现
  • 【Python基础】Python函数(基本函数)
  • Vue3 + TS + Vite —— 大屏可视化 项目实战
  • EasyExcel 批量导入并校验数据
  • 亚马逊、Allegro卖家建立属于自己的测评系统,实现批量优质账号养成
  • springboot的目录结构作用