使用 C 和 C++ 连接到 SQL 数据库

适用于:Azure SQL 数据库

本文可帮助 C 和 C++ 开发人员连接到 Azure SQL 数据库

先决条件

要完成本指南中的步骤,需具备以下各项:

  • 有效的 Azure 帐户。 如果没有 Azure 订阅,可注册一个试用版订阅
  • Visual Studio。 必须安装 C++ 语言组件才能生成和运行此示例。
  • Visual Studio Linux 开发。 如果基于 Linux 开发,还必须安装 Visual Studio Linux 扩展。

数据访问技术:ODBC 和 OLE DB

当前有两种方法连接到 Azure SQL 数据库:ODBC(开放式数据库连接)和 OLE DB(对象链接和嵌入数据库)。 最近几年,Microsoft 已在使用 ODBC 进行本地关系数据访问。 ODBC 比 OLE DB 快得多。 唯一需要说明的是,ODBC 使用的是旧的 C 样式 API。

创建 Azure SQL 数据库

请参阅入门页,以了解如何创建示例数据库。

获取连接字符串

预配 Azure SQL 数据库后,需要执行以下步骤,确定连接信息及添加用于防火墙访问的客户端 IP。

Azure 门户中,使用“显示数据库连接字符串”(包含在数据库的“概述”部分中)转到 Azure SQL 数据库 ODBC 连接字符串:

ODBCConnectionString

ODBCConnectionStringProps

复制 ODBC (包括 Node.js) [SQL 身份验证] 字符串的内容。 稍后,我们使用此字符串从 C++ ODBC 命令行解释程序进行连接。 此字符串提供驱动程序、服务器和其他数据库连接参数等详细信息。

将 IP 添加到防火墙

转到服务器的防火墙部分,并使用以下步骤将客户端 IP 添加到防火墙,以确保我们可以建立成功的连接:

AddyourIPWindow

此时,已配置好 Azure SQL 数据库,并已准备好通过 C++ 代码连接。

从 Windows C/C++ 应用程序连接

可以使用通过 Visual Studio 生成的此示例在 Windows 上轻松连接到使用 ODBC 的 Azure SQL 数据库。 该示例实现可用于连接到 Azure SQL 数据库的 ODBC 命令行解释器。 此示例将数据库源名称文件 (DSN) 文件作为命令行参数,或我们先前从 Azure 门户复制的详细的连接字符串。 打开此项目的属性页,并将连接字符串作为命令行参数粘贴,如下所示:

DSN Propsfile

确保在该数据库连接字符串中为数据库提供正确的身份验证详细信息。

启动用于生成的应用程序。 应看到如下所示确认成功连接的窗口。 甚至可以运行一些基本的 SQL 命令(例如 create table )来验证数据库连接:

SQL 命令

或者,可以使用未提供命令行参数时启动的向导创建 DSN 文件。 我们也建议尝试此选项。 可以使用此 DSN 文件进行自动化以及保护身份验证设置:

创建 DSN 文件

祝贺! 现在已成功在 Windows 上使用 C++和 ODBC 连接到 Azure SQL。 可以继续阅读如何为 Linux 平台执行相同操作的内容。

从 Linux C/C++ 应用程序连接

可以在 Visual Studio 中开发 C++ Linux 应用程序。 若要了解详细信息,请查看以下博客:适用于 Linux 开发的 Visual C++

若要为 Linux 生成,需要运行 Linux 分发的远程计算机。 如果没有可用的远程计算机,可以使用 Linux Azure 虚拟机快速设置。

本指南假定你已设置好 Ubuntu 16.04 Linux 分发。 这些步骤还适用于 Ubuntu 15.10、Red Hat 6 和 Red Hat 7。

按照以下步骤安装发行版 SQL 和 ODBC 所需的库:

    sudo su
    sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/mssql-ubuntu-test/ xenial main" > /etc/apt/sources.list.d/mssqlpreview.list'
    sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
    apt-get update
    apt-get install msodbcsql
    apt-get install unixodbc-dev-utf16 #this step is optional but recommended*

启动 Visual Studio。 在“工具”->“选项”->“跨平台”->“连接管理器”下,添加到 Linux 框的连接:

工具选项

建立通过 SSH 的连接后,创建一个空项目 (Linux) 模板:

新建项目模板

然后,可以添加 新的 C 源文件,并将其替换为此内容。 使用 ODBC API SQLAllocHandle、SQLSetConnectAttr 和 SQLDriverConnect 时,应能够初始化并建立与数据库的连接。 和 Windows ODBC 示例一样,需要使用数据库连接字符串参数的详细信息(之前从 Azure 门户复制)替换 SQLDriverConnect 调用。

     retcode = SQLDriverConnect(
        hdbc, NULL, "Driver=ODBC Driver 13 for SQL"
                    "Server;Server=<yourserver>;Uid=<yourusername>;Pwd=<"
                    "yourpassword>;database=<yourdatabase>",
        SQL_NTS, outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT);

编译前需要完成的最后一步是将 odbc 作为库依赖项添加:

将 ODBC 作为输入库添加

若要启动应用程序,请从“调试” 菜单打开 Linux 控制台:

Linux 控制台

如果已成功连接,现在应看到 Linux 控制台中显示当前数据库名称:

Linux 控制台窗口输出

祝贺你! 你已成功完成本指南,现在可以在 Windows 和 Linux 平台上通过 C++ 连接到 Azure SQL 数据库。

获取完整的 C/C++ 教程解决方案

可以在 GitHub 中查找包括本文所有示例的 GetStarted 解决方案: