共用方式為


使用 C 和 C++ 連線到 SQL Database

適用於:Azure SQL 資料庫

本文可協助 C 和 C++ 開發人員連線到 Azure SQL 資料庫

必要條件

若要完成本指南中的步驟,您需要下列項目︰

  • 作用中的 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 Database

請參閱 開始使用頁面,瞭解如何建立範例資料庫。

取得連接字串

佈建 Azure SQL 資料庫後,您需要繼續下列步驟來判定連線資訊,並新增用戶端 IP 以進行防火牆存取。

  1. Azure 入口網站中,移至您的 Azure SQL Database,然後使用在資料庫概觀區段中所列的顯示資料庫連接字串來找到 連接字串

    Azure 入口網站中 SQL 資料庫 [概觀] 頁面的螢幕快照。顯示資料庫連接字串的連結被反白顯示。

  2. 選取 [ODBC] 索引標籤。

    ODBC 連接字串的 Azure 入口網站螢幕快照。

  3. 複製 ODBC 的內容(包括 Node.js)[SQL 驗證] 字串。 我們稍後會使用此字串從 C++ ODBC 命令列解譯器連線。 此字串提供了驅動程式、伺服器和其他資料庫連接參數等詳細資料。

將您的 IP 新增至防火牆

  1. 移至 您的 Azure SQL Database 邏輯伺服器。 在 SQL 資料庫的 [概覽] 頁面上選取 [伺服器名稱] 的連結,或透過 Azure 入口網站的搜尋功能瀏覽至該名稱。
  2. 在 [安全性] 底下,選取 [網路]
  3. 在 [公用存取] 索引標籤下,選取 [選擇的網絡](如果尚未選取)。
  4. 使用下列步驟將用戶端IP新增至防火牆,以確保我們可以建立成功的連線。 選取 [新增用戶端 IPv4 位址 ] 或 [新增防火牆規則]。

此時,您已設定 Azure SQL Database,並已準備好從工作站以 C++ 程式碼進行連線。

小提示

暫時性的實驗室或學習環境接受將用戶端的工作站 IP 新增至公用網路防火牆,但針對企業級解決方案或長期專案,請遵循下列 安全性最佳做法

  • 設定 [允許 Azure 服務和資源在伺服器層級將此伺服器存取 為 OFF]。
  • 使用 VNet 服務端點以及 VNet 防火牆規則。
  • 使用私人連結。

從 Windows C/C++ 應用程式連線

您可以使用以 Visual Studio 組建的這個範例,輕鬆地使用 Windows 上的 ODBC 連線到 Azure SQL 資料庫。 此範例會實作 ODBC 命令列解譯器,可用來連線到我們的 Azure SQL 資料庫。 此範例會採用資料庫來源名稱檔案 (DSN) 檔案作為命令列引數,或稍早從 Azure 入口網站複製的冗長連接字串。 啟動這個專案的屬性頁,並將連接字串貼上為命令引數,如下所示:

DSN 屬性檔案。

請確定您為資料庫提供了正確的驗證詳細資料,作為該資料庫連接字串的一部分。

啟動應用程式來組建。 您應該會看到下列視窗驗證成功的連線。 您甚至可以執行一些基本的 SQL 命令,例如 CREATE TABLE 驗證資料庫連線能力:

odbcsql.exe中C++連線的螢幕快照。

或者,您可以在使用未提供任何命令引數時啟動的精靈來建立 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 連線的螢幕快照。

建立透過 SSH 連線之後,請建立空白專案 (Linux) 範本:

新專案的範本螢幕快照。

接著,您便可以新增新的 C 來源檔案,並以此內容進行取代。 使用 ODBC API SQLAllocHandleSQLSetConnectAttrSQLDriverConnect,您應該能夠初始化和建立資料庫的連線。

如同 Windows ODBC 範例,您需要以先前從 Azure 入口網站複製的資料庫連接字串參數詳細數據取代 SQLDriverConnect 呼叫。

     retcode = SQLDriverConnect(
        hdbc, NULL, "Driver=ODBC Driver 13 for SQL"
                    "Server;Server=<yourserver>;Uid=<yourusername>;Pwd="
                    "<password>;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 包含本文中所有範例的解決方案: