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

適用於:Azure SQL 資料庫

本貼文針對 C 和 C++ 開發人員嘗試連線至 Azure SQL 資料庫。 會細分章節,您可以移到最引起您興趣的章節。

C/C++ 教學課程的必要條件

請確認您擁有以下項目:

  • 作用中的 Azure 帳戶。 如果還沒有訂用帳戶,則可註冊免費試用版
  • Visual Studio。 您必須安裝 C++ 語言元件,才能組建並執行此範例。
  • Visual Studio Linux 開發。 如果您要在 Linux 上開發,您也必須安裝 Visual Studio Linux 延伸項目。

Azure SQL 資料庫和虛擬機器上的 SQL Server

Azure SQL 資料庫組建在 Microsoft SQL Server,其設計目的在於提供高可用性、高效能且可調整的服務。 透過內部部署執行的專屬資料庫使用 Azure SQL有許多優點。 有了 Azure SQL,您不必安裝、設定、維護或管理資料庫,而只需要安裝、設定、維護或管理資料庫的內容和結構。 我們對於容錯和備援等資料庫所擔心的一般事項都是內建的。

Azure 目前有兩個選項可裝載 SQL Server 工作負載:Azure SQL 資料庫、資料庫即服務和 虛擬機器 上的 SQL Server (VM)。 我們將不會繼續詳細說明這兩者之間的差異,只是 Azure SQL 資料庫 是新雲端式應用程式的最佳選擇,利用雲端服務提供的成本節省和效能最佳化。 如果您考慮將內部部署應用程式移轉或延伸至雲端,Azure 虛擬機上的 SQL Server 可能會更適合您。 欲簡化本文中的工作,來建立 Azure SQL 資料庫。

資料存取技術:ODBC 和 OLE DB

連線至 Azure SQL 資料庫並無不同,但目前有兩種方式可連線到資料庫:ODBC(開放式資料庫連線能力)和 OLE DB(對象連結和內嵌資料庫)。 近年來,Microsoft 已配合 ODBC 進行原生關聯性數資料存取。 ODBC 相對簡單,也比 OLE DB 快得多。 唯一要注意的事項是 ODBC 確實使用舊的 C 式 API。

步驟 1:建立 Azure SQL 資料庫

請參閱 開始使用頁面,瞭解如何建立範例資料庫。 或者,您可以遵循這段簡短的兩分鐘影片,使用 Azure 入口網站 建立 Azure SQL 資料庫。

步驟 2:取得連接字串

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

Azure 入口網站,使用資料庫概觀區段中所列的 顯示資料庫連接字串,移至您的 Azure SQL 資料庫 ODBC 連接字串:

ODBCConnectionString

ODBCConnectionStringProps

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

步驟 3:將您的 IP 新增至防火牆

移至伺服器的防火牆區段,並使用下列步驟將用戶端 IP 新增至防火牆,確保我們可以建立成功的連線:

AddyourIPWindow

此時,您已設定好 Azure SQL 資料庫,並準備從 C++ 程式代碼進行連線。

步驟 4:從 Windows C/C++ 應用程式 連線

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

DSN Propsfile

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

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

SQL Commands

或者,您可以在使用未提供任何命令引數時啟動的精靈來建立 DSN 檔案。 建議您避免使用這個選項。 您可以使用此 DSN 檔案進行自動化,並保護您的驗證設定:

Create DSN File

恭喜! 您現在已使用 Windows 上的 C++ 和 ODBC 成功連線到 Azure SQL。 您可以繼續閱讀,為 Linux 平台執行相同的作業。

步驟 5:從 Linux C/C++ 應用程式連線

如果您尚未聽過新聞,Visual Studio 現在也可讓您開發 C++ Linux 應用程式。 您可以在 Visual C++ for Linux 開發 部落格中閱讀此新案例。 欲組建 Linux,您需要一台運行 Linux 發行版的遠端電腦。。 如果您沒有可用帳戶,您可以使用 Linux Azure 虛擬機快速設定一個帳戶。

在本教學課程中,假設您已設定好 Ubuntu16.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 box 的連線:

Tools Options

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

New project template

接著,您便可以新增新的 C 來源檔案,並以此內容進行取代。 使用 ODBC API SQLAllocHandle、SQLSetConnectAttr 和 SQLDriverConnect,您應該能夠初始化和建立資料庫的連線。 如同 Windows ODBC 範例,您必須將 SQLDriverConnect 呼叫替換為先前從 Azure 入口網站複製的資料庫連接字串參數的詳細資料。

     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 新增為媒體庫相依性:

Adding ODBC as an input library

欲啟動您的應用程式,請從 [偵錯] 功能表啟動 Linux 主機:

Linux Console

如果您的連線成功,您現在應該會在 Linux 主機看到印出的目前資料庫名稱:

Linux Console Window Output

恭喜! 您已完成本教學課程,現在可以從 Windows 和 Linux 平台上的 C++ 連線到 Azure SQL 資料庫。

取得完整的 C/C++ 教學課程解決方案

您可以在 GitHub 找到本文中包含的所有範例之 [入門解決方案]:

下一步

其他資源