Herstellen einer Verbindung mit SQL-Datenbank mit C und C++

Gilt für:Azure SQL-Datenbank

Dieser Beitrag ist für C- und C++-Entwickler gedacht, die eine Verbindung mit Azure SQL-Datenbank herstellen möchten. Er ist in Abschnitte unterteilt, damit Sie direkt auf den für Sie interessanten Abschnitt zugreifen können.

Voraussetzungen für das C/C++-Tutorial

Stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Ein aktives Azure-Konto. Wenn Sie kein Konto haben, können Sie sich für eine kostenlose Azure-Testversionregistrieren.
  • Visual Studio. Sie müssen die C++-Sprachkomponenten installieren, um dieses Beispiel erstellen und ausführen zu können.
  • Visual Studio-Linux-Entwicklung. Wenn Sie unter Linux entwickeln, müssen Sie auch die Linux-Erweiterung für Visual Studio installieren.

Azure SQL-Datenbank und SQL Server auf virtuellen Computern

Azure SQL-Datenbank basiert auf Microsoft SQL Server und ist dafür ausgelegt, einen hochverfügbaren, leistungsfähigen und skalierbaren Dienst bereitzustellen. Die Verwendung von Azure SQL-Datenbank hat gegenüber der Nutzung Ihrer eigenen lokal ausgeführten Datenbank viele Vorteile. Mit Azure SQL-Datenbank müssen Sie die Datenbank nicht installieren, einrichten, warten oder verwalten, sondern sich nur um den Inhalt und die Struktur der Datenbank kümmern. Typische Aspekte wie Fehlertoleranz und Redundanz, um die es bei Datenbanken geht, sind bereits vorhanden.

Azure verfügt derzeit über zwei Optionen zum Hosten von SQL Server-Workloads: Azure SQL-Datenbank („Database as a Service“) und SQL Server auf virtuellen Computern (VMs). Wir gehen hier nicht näher auf die Unterschiede zwischen diesen beiden Optionen ein, aber Azure SQL-Datenbank ist die beste Möglichkeit für neue cloudbasierte Anwendungen. Mit diesem Ansatz können Sie Kosteneinsparungen erzielen und kommen in den Genuss der mit Clouddiensten verbundenen Leistungsoptimierung. Wenn Sie mit dem Gedanken spielen, Ihre lokalen Anwendungen in die Cloud zu migrieren bzw. in die Cloud zu erweitern, ist SQL Server auf virtuellen Azure-Computern ggf. besser für Sie geeignet. Der Einfachheit halber erstellen Sie in diesem Artikel eine Azure SQL-Datenbank-Instanz.

Datenzugriffstechnologien: ODBC und OLE DB

Die Herstellung der Verbindung mit Azure SQL-Datenbank ist nicht viel anders. Derzeit gibt es zwei Möglichkeiten, die Verbindung mit Datenbanken herzustellen: ODBC (Open Database Connectivity) und OLE DB (Object Linking and Embedding Database). In den letzten Jahren hat Microsoft eine Anpassung an ODBC in Bezug auf den Zugriff auf native relationale Daten durchgeführt. ODBC ist relativ einfach und außerdem deutlich schneller als OLE DB. Der einzige Nachteil ist, dass für ODBC eine ältere API im C-Stil verwendet wird.

Schritt 1: Erstellen der Azure SQL-Datenbank

Auf der Seite für erste Schritte erhalten Sie Informationen zum Erstellen einer Beispieldatenbank. Alternativ hierzu können Sie sich an dieses kurze zweiminütige Video halten, um mit dem Azure-Portal eine Azure SQL-Datenbank zu erstellen.

Schritt 2: Abrufen der Verbindungszeichenfolge

Nachdem Ihre Azure SQL-Datenbank-Instanz bereitgestellt wurde, müssen Sie die folgenden Schritte ausführen, um die Verbindungsinformationen zu ermitteln und Ihre Client-IP-Adresse für den Firewallzugriff hinzuzufügen.

Navigieren Sie im Azure-Portal zur ODBC-Verbindungszeichenfolge für Ihre Azure SQL-Datenbank-Instanz, indem Sie die Option Datenbank-Verbindungszeichenfolgen anzeigen im Übersichtsbereich für Ihre Datenbank verwenden:

ODBCConnectionString

ODBCConnectionStringProps

Kopieren Sie den Inhalt der Zeichenfolge ODBC (Includes Node.js) [SQL authentication]. Wir verwenden diese Zeichenfolge später, um die Verbindung vom C++-ODBC-Befehlszeileninterpreter herzustellen. Diese Zeichenfolge enthält Details wie Treiber, Server und andere Parameter für die Datenbankverbindung.

Schritt 3: Hinzufügen Ihrer IP zur Firewall

Navigieren Sie zum Firewallabschnitt für Ihren Server, und fügen Sie die Client-IP-Adresse der Firewall mit diesen Schritten hinzu, um sicherzustellen, dass die Verbindung erfolgreich hergestellt werden kann:

AddyourIPWindow

An diesem Punkt haben Sie Ihre Azure SQL-Datenbank-Instanz konfiguriert und können die Verbindung aus Ihrem C++-Code herstellen.

Schritt 4: Herstellen einer Verbindung von einer Windows-C/C++-Anwendung

Sie können auf einfache Weise für Azure SQL-Datenbank per ODBC unter Windows eine Verbindung herstellen, indem Sie dieses Beispiel verwenden, das mit Visual Studio erstellt wird. Im Beispiel wird ein ODBC-Befehlszeileninterpreter implementiert, der verwendet werden kann, um eine Verbindung mit der Azure SQL-Datenbank-Instanz herzustellen. In diesem Beispiel wird entweder eine Datenbankquellenname-Datei (DSN) als Befehlszeilenargument oder die ausführliche Verbindungszeichenfolge verwendet, die wir zuvor aus dem Azure-Portal kopiert haben. Rufen Sie die Eigenschaftenseite für dieses Projekt auf, und fügen Sie die Verbindungszeichenfolge wie hier dargestellt als Befehlsargument ein:

DSN Propsfile

Achten Sie darauf, dass Sie die richtigen Authentifizierungsdetails für Ihre Datenbank als Teil der Datenbank-Verbindungszeichenfolge angeben.

Starten Sie die Anwendung, um die Erstellung durchzuführen. Das folgende Fenster mit dem Hinweis, dass die Verbindung erfolgreich hergestellt wurde, sollte angezeigt werden. Sie können sogar einige einfache SQL-Befehle wie Create Table ausführen, um die Datenbankverbindung zu überprüfen:

SQL Commands

Alternativ hierzu können Sie auch eine DSN-Datei mit dem Assistenten erstellen, der gestartet wird, wenn keine Befehlsargumente angegeben werden. Wir empfehlen Ihnen, diese Option ebenfalls auszuprobieren. Sie können diese DSN-Datei für die Automation und den Schutz Ihrer Authentifizierungseinstellungen verwenden:

Create DSN File

Glückwunsch! Sie haben mit C++ und ODBC unter Windows jetzt eine Verbindung mit Azure SQL hergestellt. Sie können weiterlesen, um sich auch über die Vorgehensweise für die Linux-Plattform zu informieren.

Schritt 5: Herstellen einer Verbindung von einer Linux-C/C++-Anwendung

Falls Sie es noch nicht gehört haben: Mit Visual Studio können Sie jetzt auch C++-Linux-Anwendungen entwickeln. Informationen zu diesem neuen Szenario finden Sie im Blog Visual C++ for Linux Development (Visual C++ für Linux-Entwicklung). Für die Linux-Erstellung benötigen Sie einen Remotecomputer, auf dem Ihre Linux-Distribution ausgeführt wird. Falls Sie keinen Remotecomputer haben, können Sie einen solchen schnell einrichten, indem Sie die Informationen unter Virtuelle Azure Linux-Computer nutzen.

Für die Zwecke dieses Tutorials nehmen wir an, dass Sie eine Linux-Distribution vom Typ Ubuntu 16.04 eingerichtet haben. Die hier angegebenen Schritte sollten auch für Ubuntu 15.10, Red Hat 6 und Red Hat 7 gelten.

Mit den folgenden Schritten werden die erforderlichen Bibliotheken für SQL und ODBC für Ihre Distribution installiert:

    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*

Starten Sie Visual Studio. Fügen Sie unter „Extras“ > „Optionen“ > „Plattformübergreifend“ > „Verbindungs-Manager“ eine Verbindung zum Linux-Feld hinzu:

Tools Options

Erstellen Sie nach dem Herstellen der Verbindung per SSH eine leere Projektvorlage (Linux):

New project template

Anschließend können Sie eine neue C-Quelldatei hinzufügen und diesen Inhalt einfügen. Mithilfe von ODBC APIs SQLAllocHandle, SQLSetConnectAttr und SQLDriverConnect sollten Sie eine Verbindung mit Ihrer Datenbank initialisieren und einrichten können. Wie beim Windows-ODBC-Beispiel auch, müssen Sie den SQLDriverConnect-Aufruf durch die Details aus Ihren Parametern der Datenbank-Verbindungszeichenfolge ersetzen, die Sie zuvor aus dem Azure-Portal kopiert haben.

     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);

Der letzte Schritt vor dem Kompilieren ist das Hinzufügen von odbc als Bibliotheksabhängigkeit:

Adding ODBC as an input library

Rufen Sie die Linux-Konsole über das Menü Debuggen auf, um die Anwendung zu starten:

Linux Console

Wenn die Verbindung erfolgreich hergestellt wurde, wird in der Linux-Konsole jetzt der aktuelle Datenbankname angezeigt:

Linux Console Window Output

Glückwunsch! Sie haben das Tutorial erfolgreich abgeschlossen und können über C++ auf Windows- und Linux-Plattformen jetzt eine Verbindung mit Ihrer Azure SQL-Datenbank-Instanz herstellen.

Herunterladen der vollständigen Projektmappe für das C/C++-Tutorial

Sie finden die GetStarted-Projektmappe mit allen Beispielen dieses Artikels auf GitHub:

Nächste Schritte

Zusätzliche Ressourcen