Rychlý start: Připojení a dotazování dat ve službě Azure Database for MySQL pomocí konektoru nebo jazyka C++

PLATÍ PRO: Jednoúčelový server Azure Database for MySQL

Důležité

Jednoúčelový server Azure Database for MySQL je na cestě vyřazení. Důrazně doporučujeme upgradovat na flexibilní server Azure Database for MySQL. Další informace o migraci na flexibilní server Azure Database for MySQL najdete v tématu Co se děje s jednoúčelovým serverem Azure Database for MySQL?

Tento rychlý start ukazuje, jak se připojit ke službě Azure Database for MySQL s použitím aplikace v C++. Ukazuje, jak pomocí příkazů jazyka SQL dotazovat, vkládat, aktualizovat a odstraňovat data v databázi. V tomto tématu se předpokládá, že máte zkušenosti s vývojem pomocí jazyka C++ a začínáte pracovat se službou Azure Database for MySQL.

Požadavky

Tento rychlý start využívá jako výchozí bod prostředky vytvořené v některém z následujících průvodců:

Budete také muset:

Důležité

Ujistěte se, že ip adresa, ze které se připojujete, byla přidána pravidla brány firewall serveru pomocí webu Azure Portal nebo Azure CLI.

Instalace sady Visual Studio a .NET

Kroky v této části předpokládají, že máte zkušenosti s vývojem pomocí .NET.

Windows

  • Nainstalujte Visual Studio 2019 Community. Visual Studio 2019 Community je plnohodnotné a rozšiřitelné bezplatné integrované vývojové prostředí (IDE). Pomocí tohoto integrovaného vývojového prostředí můžete vytvářet moderní aplikace pro Android, iOS, Windows, webové a databázové aplikace a cloudové služby. Můžete nainstalovat úplné rozhraní .NET Framework nebo jenom .NET Core: fragmenty kódu v tomto rychlém startu fungují s oběma. Pokud už máte v počítači nainstalovanou sadu Visual Studio, přeskočte následující dva kroky.
    1. Stáhněte si instalační program sady Visual Studio 2019.
    2. Spusťte instalační program a podle zobrazených pokynů instalaci dokončete.

Konfigurace sady Visual Studio

  1. V sadě Visual Studio, Project – Vlastnosti –>> Linker –> Obecné > další adresáře knihovny přidejte adresář \lib\opt (například C:\Program Files (x86)\MySQL\MySQL Connector C++ 1.1.9\lib\opt) konektoru C++.
  2. V sadě Visual Studio, Project –> Vlastnosti –> C/C++ –> Obecné –> Další adresáře zahrnutí:
    • Přidejte adresář \include konektoru c++ (například C:\Program Files (x86)\MySQL\MySQL Connector C++ 1.1.9\include).
    • Přidejte kořenový adresář knihovny Boost (například C:\boost_1_64_0).
  3. V sadě Visual Studio, Project – Vlastnosti –>> Linker –> Vstup > dalších závislostí, přidejte do textového pole mysqlcppconn.lib.
  4. Zkopírujte soubor mysqlcppconn.dll ze složky knihovny konektoru C++ z kroku 3 do stejného adresáře jako spustitelný soubor aplikace nebo ho přidejte do proměnné prostředí, aby ho vaše aplikace mohla najít.

Získání informací o připojení

Získejte informace o připojení potřebné pro připojení ke službě Azure Database for MySQL. Potřebujete plně kvalifikovaný název serveru a přihlašovací údaje.

  1. Přihlaste se k portálu Azure.
  2. V nabídce vlevo na webu Azure Portal klikněte na Všechny prostředky a vyhledejte vytvořený server (například mydemoserver).
  3. Klikněte na název serveru.
  4. Na panelu Přehled serveru si poznamenejte Název serveru a Přihlašovací jméno správce serveru. Pokud zapomenete své heslo, můžete ho na tomto panelu také resetovat.

Připojení, vytvoření tabulky a vložení dat

Pomocí následujícího kódu se připojte a nahrajte data s využitím příkazů CREATE TABLE a INSERT INTO jazyka SQL. Tento kód pro navázání připojení k MySQL využívá třídu sql::Driver s metodou connect(). Potom kód použije metody createStatement() a execute() pro spuštění příkazů databáze.

Nahraďte parametry Host, DBName, User a Password. Parametry můžete nahradit hodnotami, které jste zadali při vytváření serveru a databáze.

#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;
}

Čtení dat

Pomocí následujícího kódu se připojte a načtěte data s využitím příkazu SELECT jazyka SQL. Tento kód pro navázání připojení k MySQL využívá třídu sql::Driver s metodou connect(). Potom kód použije metody prepareStatement() a executeQuery() pro spuštění příkazů select. Dále kód použije metodu next() k přechodu na záznamy ve výsledcích. Nakonec kód použije metody getInt() a getString() k parsování hodnot v záznamu.

Nahraďte parametry Host, DBName, User a Password. Parametry můžete nahradit hodnotami, které jste zadali při vytváření serveru a databáze.

#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;
}

Aktualizace dat

Pomocí následujícího kódu se připojte a načtěte data s využitím příkazu UPDATE jazyka SQL. Tento kód pro navázání připojení k MySQL využívá třídu sql::Driver s metodou connect(). Potom kód použije metody prepareStatement() a executeQuery() pro spuštění příkazů update.

Nahraďte parametry Host, DBName, User a Password. Parametry můžete nahradit hodnotami, které jste zadali při vytváření serveru a databáze.

#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;
}

Odstranění dat

Pomocí následujícího kódu se připojte a načtěte data s využitím příkazu DELETE jazyka SQL. Tento kód pro navázání připojení k MySQL využívá třídu sql::Driver s metodou connect(). Potom kód použije metody prepareStatement() a executeQuery() pro spuštění příkazů delete.

Nahraďte parametry Host, DBName, User a Password. Parametry můžete nahradit hodnotami, které jste zadali při vytváření serveru a databáze.

#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;
}

Vyčištění prostředků

Pokud chcete vyčistit všechny prostředky použité během tohoto rychlého startu, odstraňte skupinu prostředků pomocí následujícího příkazu:

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes

Další kroky