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

Gilt für:: Azure SQL-Datenbank

Dieser Artikel hilft C- und C++-Entwicklern, eine Verbindung mit Azure SQL-Datenbank herzustellen.

Voraussetzungen

Damit Sie die in dieser Anleitung gestellten Schritte ausführen können, benötigen Sie Folgendes:

  • 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.

Datenzugriffstechnologien: ODBC und OLE DB

Derzeit gibt es zwei Möglichkeiten, die Verbindung mit Azure SQL-Datenbank 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 viel schneller als OLE DB. Der einzige Nachteil ist, dass für ODBC eine ältere API im C-Stil verwendet wird.

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.

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 Übersicht-Bereich 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.

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.

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-Befehle

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:

Erstellen der DSN-Datei

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.

Herstellen einer Verbindung von einer Linux-C/C++-Anwendung

Sie können C++-Linux-Anwendungen in Visual Studio entwickeln. Weitere Informationen finden Sie im folgenden Blog: 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.

Diese Anleitung nimmt an, dass Sie eine Linux-Distribution vom Typ Ubuntu 16.04 eingerichtet haben. Die angegebenen Schritte gelten auch für Ubuntu 15.10, Red Hat 6 und Red Hat 7.

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:

Tooloptionen

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

Neue Projektvorlage

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:

Hinzufügen von ODBC als Eingabebibliothek

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

Linux-Konsole

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

Ausgabefenster der Linux-Konsole

Herzlichen Glückwunsch! Sie haben die Anleitung 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: