C と C++ を使用して SQL Database に接続する

適用対象: Azure SQL データベース

この記事は、C および C++ 言語による開発者が Azure SQL データベース に接続する場合に役立ちます。

前提条件

このガイドの手順を完了するには、次のものが必要です:

  • アクティブな Azure アカウントアカウントがない場合、Azure 試用版にサインアップして、最大 10 件の無料 Mobile Apps を入手できます。 これがない場合は、 Azure の無料試用版にサインアップできます。
  • Visual Studio. このサンプルをビルドして実行するには、C++ 言語コンポーネントをインストールする必要があります。
  • Visual Studio Linux Development。 Linux で開発する場合は、Visual Studio Linux 拡張機能もインストールする必要があります。

データ アクセス テクノロジ:ODBC および OLE DB

現在、Azure SQL データベースへの接続するには、ODBC (Open Database connectivity) と OLE DB (オブジェクトのリンクと埋め込みデータベース) の 2 通りの方法があります。 近年、Microsoft は、ネイティブのリレーショナル データベースにおいて ODBCと連携してきました。 ODBC は OLE DB よりもはるかに高速です。 ただし、ODBC は以前の C スタイルの API を使用しているという点で注意が必要です。

Azure SQL Database を作成する

作業の開始 」ページで、サンプル データベースを作成する方法についてご確認ください。 または、こちらの 2 分ほどの短い動画に従えば、Azure portal を使用して Azure SQL Database を作成できます。

接続文字列を取得する

Azure SQL Database がプロビジョニングされたら、次の手順に従って接続情報を指定し、ファイアウォール アクセスのクライアント IP アドレスを追加する必要があります。

Azure portal で、[データベース接続文字列の表示] を使用することで、データベースの [概要] セクションの一部として表示されている Azure SQL データベース ODBC 接続文字列に移動します:

ODBCConnectionString

ODBCConnectionStringProps

ODBC (Node.js を含む) [SQL 認証] 文字列の内容をコピーします。 この文字列は後で C++ ODBC コマンド ライン インタープリターからの接続に使用します。 この文字列は、ドライバー、サーバー、その他のデータベース接続パラメーターといった詳細情報を提供します。

ファイアウォールに IP アドレスを追加する

サーバーのファイアウォールに関するセクションに移動し、次の手順を使用してクライアントの IP アドレスをファイアウォールに追加して、正しく接続できることを確認します。

AddyourIPWindow

この時点で、Azure SQL Database が構成され、C++ コードから接続する準備が整いました。

Windows C/C++ アプリケーションから接続する

Visual Studio でビルドするこちらのサンプルを使用すれば、Windows の ODBC を使用して Azure SQL Database に簡単に接続できます。 このサンプルでは、ODBC コマンド ライン インタープリターを使用して Azure SQL Database に接続します。 このサンプルでは、コマンドライン引数としてデータベース ソース名ファイル (DSN ファイル) か、先に Azure Portal からコピーした詳細な接続文字列を使用します。 このプロジェクトのプロパティ ページを表示し、次に示すように、コマンド引数に接続文字列を貼り付けます。

DSN Propsfile

データベースの接続文字列の一部として、データベースの適切な認証情報が指定されていることを確認します。

アプリケーションを起動してビルドします。 正常な接続を検証する次のウィンドウが表示されます。 create tableのような基本的な SQL コマンドを実行して、データベースの接続を検証することもできます。

SQL コマンド

また、コマンド引数が指定されていないときに開くウィザードを使用して、DSN ファイルを作成することもできます。 このオプションも試してみることをお勧めします。 この DSN ファイルを使用すれば、認証設定を自動化して保護できます。

DSN ファイルを作成する

お疲れさまでした。 これで、C++ と Windows の ODBC を使用して Azure SQL に正しく接続できました。 引き続き Linux プラットフォーム向けの同様の記事もご覧ください。

Linux C/C++ アプリケーションから接続する

Visual Studio で C++ Linux アプリケーションを開発できます。 詳細については、次のブログ「Visual C++ for Linux Development」を参照してください。

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 APIs SQLAllocHandle、SQLSetConnectAttr、SQLDriverConnect を使用すると、データベースへの接続を初期化し、確立することができます。 Windows ODBC のサンプルと同様に、SQLDriverConnect 呼び出しを、先に Azure Portal からコピーしたデータベース接続文字列パラメーターの詳細に置き換える必要があります。

     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++ チュートリアル ソリューションを確認する

GitHub では、この記事のすべてのサンプルを含む GetStarted ソリューションをご利用いただけます。