Azure Database for MySQL: Verwenden eines Connectors/von C++ zum Herstellen einer Verbindung und Abfragen von DatenAzure Database for MySQL: Use Connector/C++ to connect and query data

Dieser Schnellstart zeigt, wie Sie mit einer C#-Anwendung eine Verbindung mit einer Azure Database for MySQL-Instanz herstellen.This quickstart demonstrates how to connect to an Azure Database for MySQL by using a C++ application. Es wird veranschaulicht, wie Sie SQL-Anweisungen zum Abfragen, Einfügen, Aktualisieren und Löschen von Daten in der Datenbank verwenden.It shows how to use SQL statements to query, insert, update, and delete data in the database. In diesem Thema wird davon ausgegangen, dass Sie mit der C++-Entwicklung vertraut sind, aber noch keine Erfahrung mit Azure Database for MySQL haben.This topic assumes you're familiar with developing using C++ and you're new to working with Azure Database for MySQL.

VoraussetzungenPrerequisites

In diesem Schnellstart werden die Ressourcen, die in den folgenden Anleitungen erstellt wurden, als Ausgangspunkt verwendet:This quickstart uses the resources created in either of the following guides as a starting point:

Außerdem benötigen Sie Folgendes:You also need to:

Installieren von Visual Studio Code und .NETInstall Visual Studio and .NET

Bei den Schritten in diesem Abschnitt wird davon ausgegangen, dass Sie mit der .NET-Entwicklung vertraut sind.The steps in this section assume that you're familiar with developing using .NET.

WindowsWindows

  • Installieren Sie Visual Studio 2019 Community.Install Visual Studio 2019 Community. Visual Studio 2019 Community ist eine erweiterbare IDE mit vollem Funktionsumfang, die kostenlos bereitgestellt wird.Visual Studio 2019 Community is a full featured, extensible, free IDE. Mit dieser IDE können Sie moderne Anwendungen für Android, iOS und Windows, Web- und Datenanwendungen sowie Clouddienste entwickeln.With this IDE, you can create modern applications for Android, iOS, Windows, web and database applications, and cloud services. Sie können entweder das vollständige .NET Framework oder nur .NET Core installieren. Die Codeausschnitte in der Schnellstartanleitung können mit beiden Lösungen verwendet werden.You can install either the full .NET Framework or just .NET Core: the code snippets in the Quickstart work with either. Falls Visual Studio bereits auf Ihrem Computer installiert ist, können Sie die nächsten beiden Schritte überspringen.If you already have Visual Studio installed on your computer, skip the next two steps.
    1. Laden Sie das Visual Studio 2019-Installationsprogramm herunter.Download the Visual Studio 2019 installer.
    2. Führen Sie das Installationsprogramm aus, und befolgen Sie die Installationsanweisungen, um die Installation abzuschließen.Run the installer and follow the installation prompts to complete the installation.

Konfigurieren von Visual StudioConfigure Visual Studio

  1. Fügen Sie in Visual Studio unter „Projekt“ > „Eigenschaften“ > „Linker“ > „Allgemein“ > „Zusätzliche Bibliotheksverzeichnisse“ das Verzeichnis „\lib\opt“ (Beispiel: „C:\Programme (x86)\MySQL\MySQL Connector C++ 1.1.9\lib\opt“) des C++-Connectors hinzu.From Visual Studio, Project -> Properties -> Linker -> General > Additional Library Directories, add the "\lib\opt" directory (for example: C:\Program Files (x86)\MySQL\MySQL Connector C++ 1.1.9\lib\opt) of the C++ connector.
  2. Gehen Sie in Visual Studio unter „Projekt“ > „Eigenschaften“ > „C/C++“ > „Allgemein“ > „Zusätzliche Includeverzeichnisse“ wie folgt vor:From Visual Studio, Project -> Properties -> C/C++ -> General -> Additional Include Directories:
    • Fügen Sie das Verzeichnis „\include“ des C++-Connectors (Beispiel: „C:\Programme (x86)\MySQL\MySQL Connector C++ 1.1.9\include“) hinzu.Add the "\include" directory of c++ connector (for example: C:\Program Files (x86)\MySQL\MySQL Connector C++ 1.1.9\include).
    • Fügen Sie das Stammverzeichnis der Boost-Bibliothek hinzu (Beispiel: „C:\boost_1_64_0“).Add the Boost library's root directory (for example: C:\boost_1_64_0).
  3. Fügen Sie in Visual Studio unter „Projekt“ > „Eigenschaften“ > „Linker“ > „Eingabe“ > „Zusätzliche Abhängigkeiten“ dem Textfeld die Bibliothek mysqlcppconn.lib hinzu.From Visual Studio, Project -> Properties -> Linker -> Input > Additional Dependencies, add mysqlcppconn.lib into the text field.
  4. Kopieren Sie die Datei mysqlcppconn.dll aus dem Bibliotheksordner des C++-Connectors in Schritt 3 in dasselbe Verzeichnis wie die ausführbare Datei der Anwendung, oder fügen Sie sie der Umgebungsvariablen hinzu, damit sie von Ihrer Anwendung gefunden werden kann.Either copy mysqlcppconn.dll from the C++ connector library folder in step 3 to the same directory as the application executable or add it to the environment variable so your application can find it.

Abrufen von VerbindungsinformationenGet connection information

Rufen Sie die Verbindungsinformationen ab, die zum Herstellen einer Verbindung mit der Azure SQL-Datenbank für MySQL erforderlich sind.Get the connection information needed to connect to the Azure Database for MySQL. Sie benötigen den vollqualifizierten Servernamen und die Anmeldeinformationen.You need the fully qualified server name and login credentials.

  1. Melden Sie sich beim Azure-Portal an.Sign in to the Azure portal.
  2. Klicken Sie im Azure-Portal im linken Menü auf Alle Ressourcen, und suchen Sie dann nach dem soeben erstellten Server, z.B. mydemoserver.From the left-hand menu in Azure portal, click All resources, and then search for the server you have created (such as mydemoserver).
  3. Klicken Sie auf den Servernamen.Click the server name.
  4. Notieren Sie sich im Bereich Übersicht des Servers den Servernamen und den Anmeldenamen des Serveradministrators.From the server's Overview panel, make a note of the Server name and Server admin login name. Wenn Sie Ihr Kennwort vergessen haben, können Sie es in diesem Bereich auch zurücksetzen.If you forget your password, you can also reset the password from this panel. Servername für Azure-Datenbank für MySQLAzure Database for MySQL server name

Herstellen der Verbindung, Erstellen der Tabelle und Einfügen von DatenConnect, create table, and insert data

Verwenden Sie den folgenden Code, um eine Verbindung herzustellen und die Daten zu laden, indem Sie die SQL-Anweisungen CREATE TABLE und INSERT INTO verwenden.Use the following code to connect and load the data by using CREATE TABLE and INSERT INTO SQL statements. Im Code wird die sql::Driver-Klasse mit der connect()-Methode verwendet, um eine Verbindung mit MySQL herzustellen.The code uses sql::Driver class with the connect() method to establish a connection to MySQL. Anschließend werden im Code die Methoden „createStatement()“ und „execute()“ verwendet, um die Datenbankbefehle auszuführen.Then the code uses method createStatement() and execute() to run the database commands.

Ersetzen Sie die Parameter für Host, DBName, Benutzer und Kennwort.Replace the Host, DBName, User, and Password parameters. Sie können die Parameter durch die Werte ersetzen, die Sie beim Erstellen des Servers und der Datenbank angegeben haben.You can replace the parameters with the values that you specified when you created the server and database.

#include <stdlib.h>
#include <iostream>
#include "stdafx.h"

#include "mysql_connection.h"
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/prepared_statement.h>
using namespace std;

//for demonstration only. never save your password in the code!
const string server = "tcp://yourservername.mysql.database.azure.com:3306";
const string username = "username@servername";
const string password = "yourpassword";

int main()
{
    sql::Driver *driver;
    sql::Connection *con;
    sql::Statement *stmt;
    sql::PreparedStatement *pstmt;

    try
    {
        driver = get_driver_instance();
        con = driver->connect(server, username, password);
    }
    catch (sql::SQLException e)
    {
        cout << "Could not connect to server. Error message: " << e.what() << endl;
        system("pause");
        exit(1);
    }

    //please create database "quickstartdb" ahead of time
    con->setSchema("quickstartdb");

    stmt = con->createStatement();
    stmt->execute("DROP TABLE IF EXISTS inventory");
    cout << "Finished dropping table (if existed)" << endl;
    stmt->execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);");
    cout << "Finished creating table" << endl;
    delete stmt;

    pstmt = con->prepareStatement("INSERT INTO inventory(name, quantity) VALUES(?,?)");
    pstmt->setString(1, "banana");
    pstmt->setInt(2, 150);
    pstmt->execute();
    cout << "One row inserted." << endl;

    pstmt->setString(1, "orange");
    pstmt->setInt(2, 154);
    pstmt->execute();
    cout << "One row inserted." << endl;

    pstmt->setString(1, "apple");
    pstmt->setInt(2, 100);
    pstmt->execute();
    cout << "One row inserted." << endl;

    delete pstmt;
    delete con;
    system("pause");
    return 0;
}

Lesen von DatenRead data

Verwenden Sie den folgenden Code, um die Daten mit einer SQL-Anweisung des Typs SELECT zu verbinden und zu lesen.Use the following code to connect and read the data by using a SELECT SQL statement. Im Code wird die sql::Driver-Klasse mit der connect()-Methode verwendet, um eine Verbindung mit MySQL herzustellen.The code uses sql::Driver class with the connect() method to establish a connection to MySQL. Anschließend werden im Code die Methoden „prepareStatement()“ und „executeQuery()“ verwendet, um die Auswahlbefehle auszuführen.Then the code uses method prepareStatement() and executeQuery() to run the select commands. Als Nächstes wird im Code „next()“ verwendet, um zu den Datensätzen in den Ergebnissen zu gelangen.Next, the code uses next() to advance to the records in the results. Schließlich werden im Code „getInt()“ und „getString()“ verwendet, um die Werte im Datensatz zu analysieren.Finally, the code uses getInt() and getString() to parse the values in the record.

Ersetzen Sie die Parameter für Host, DBName, Benutzer und Kennwort.Replace the Host, DBName, User, and Password parameters. Sie können die Parameter durch die Werte ersetzen, die Sie beim Erstellen des Servers und der Datenbank angegeben haben.You can replace the parameters with the values that you specified when you created the server and database.

#include <stdlib.h>
#include <iostream>
#include "stdafx.h"

#include "mysql_connection.h"
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/prepared_statement.h>
using namespace std;

//for demonstration only. never save your password in the code!
const string server = "tcp://yourservername.mysql.database.azure.com:3306";
const string username = "username@servername";
const string password = "yourpassword";

int main()
{
    sql::Driver *driver;
    sql::Connection *con;
    sql::PreparedStatement *pstmt;
    sql::ResultSet *result;

    try
    {
        driver = get_driver_instance();
        //for demonstration only. never save password in the code!
        con = driver->connect(server, username, password);
    }
    catch (sql::SQLException e)
    {
        cout << "Could not connect to server. Error message: " << e.what() << endl;
        system("pause");
        exit(1);
    }

    con->setSchema("quickstartdb");

    //select  
    pstmt = con->prepareStatement("SELECT * FROM inventory;");
    result = pstmt->executeQuery();

    while (result->next())
        printf("Reading from table=(%d, %s, %d)\n", result->getInt(1), result->getString(2).c_str(), result->getInt(3));

    delete result;
    delete pstmt;
    delete con;
    system("pause");
    return 0;
}

Aktualisieren von DatenUpdate data

Verwenden Sie den folgenden Code, um die Daten mit einer SQL-Anweisung des Typs UPDATE zu verbinden und zu lesen.Use the following code to connect and read the data by using an UPDATE SQL statement. Im Code wird die sql::Driver-Klasse mit der connect()-Methode verwendet, um eine Verbindung mit MySQL herzustellen.The code uses sql::Driver class with the connect() method to establish a connection to MySQL. Anschließend werden im Code die Methoden „prepareStatement()“ und „executeQuery()“ verwendet, um die Aktualisierungsbefehle auszuführen.Then the code uses method prepareStatement() and executeQuery() to run the update commands.

Ersetzen Sie die Parameter für Host, DBName, Benutzer und Kennwort.Replace the Host, DBName, User, and Password parameters. Sie können die Parameter durch die Werte ersetzen, die Sie beim Erstellen des Servers und der Datenbank angegeben haben.You can replace the parameters with the values that you specified when you created the server and database.

#include <stdlib.h>
#include <iostream>
#include "stdafx.h"

#include "mysql_connection.h"
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/prepared_statement.h>
using namespace std;

//for demonstration only. never save your password in the code!
const string server = "tcp://yourservername.mysql.database.azure.com:3306";
const string username = "username@servername";
const string password = "yourpassword";

int main()
{
    sql::Driver *driver;
    sql::Connection *con;
    sql::PreparedStatement *pstmt;

    try
    {
        driver = get_driver_instance();
        //for demonstration only. never save password in the code!
        con = driver->connect(server, username, password);
    }
    catch (sql::SQLException e)
    {
        cout << "Could not connect to server. Error message: " << e.what() << endl;
        system("pause");
        exit(1);
    }
    
    con->setSchema("quickstartdb");

    //update
    pstmt = con->prepareStatement("UPDATE inventory SET quantity = ? WHERE name = ?");
    pstmt->setInt(1, 200);
    pstmt->setString(2, "banana");
    pstmt->executeQuery();
    printf("Row updated\n");

    delete con;
    delete pstmt;
    system("pause");
    return 0;
}

Löschen von DatenDelete data

Verwenden Sie den folgenden Code, um die Daten mit einer SQL-Anweisung des Typs DELETE zu verbinden und zu lesen.Use the following code to connect and read the data by using a DELETE SQL statement. Im Code wird die sql::Driver-Klasse mit der connect()-Methode verwendet, um eine Verbindung mit MySQL herzustellen.The code uses sql::Driver class with the connect() method to establish a connection to MySQL. Anschließend werden im Code die Methoden „prepareStatement()“ und „executeQuery()“ verwendet, um die Löschbefehle auszuführen.Then the code uses method prepareStatement() and executeQuery() to run the delete commands.

Ersetzen Sie die Parameter für Host, DBName, Benutzer und Kennwort.Replace the Host, DBName, User, and Password parameters. Sie können die Parameter durch die Werte ersetzen, die Sie beim Erstellen des Servers und der Datenbank angegeben haben.You can replace the parameters with the values that you specified when you created the server and database.

#include <stdlib.h>
#include <iostream>
#include "stdafx.h"

#include "mysql_connection.h"
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/prepared_statement.h>
using namespace std;

//for demonstration only. never save your password in the code!
const string server = "tcp://yourservername.mysql.database.azure.com:3306";
const string username = "username@servername";
const string password = "yourpassword";

int main()
{
    sql::Driver *driver;
    sql::Connection *con;
    sql::PreparedStatement *pstmt;
    sql::ResultSet *result;

    try
    {
        driver = get_driver_instance();
        //for demonstration only. never save password in the code!
        con = driver->connect(server, username, password);
    }
    catch (sql::SQLException e)
    {
        cout << "Could not connect to server. Error message: " << e.what() << endl;
        system("pause");
        exit(1);
    }
    
    con->setSchema("quickstartdb");
        
    //delete
    pstmt = con->prepareStatement("DELETE FROM inventory WHERE name = ?");
    pstmt->setString(1, "orange");
    result = pstmt->executeQuery();
    printf("Row deleted\n");    
    
    delete pstmt;
    delete con;
    delete result;
    system("pause");
    return 0;
}

Nächste SchritteNext steps