Início Rápido: Usar o Conector/C++ para conectar e consultar dados no Banco de Dados do Azure para MySQL
APLICA-SE A: Banco de dados do Azure para MySQL – Servidor Único
Importante
O servidor único do Banco de Dados do Azure para MySQL está no caminho da desativação. É altamente recomendável que você atualize para o servidor flexível do Banco de Dados do Azure para MySQL. Para obter mais informações sobre a migração para o servidor flexível do Banco de Dados do Azure para MySQL, confira O que está acontecendo com o Servidor Único do Banco de Dados do Azure para MySQL?
Este guia de início rápido demonstra como se conectar a um Banco de Dados do Azure para MySQL usando um aplicativo C++. Ele mostra como usar instruções SQL para consultar, inserir, atualizar e excluir dados no banco de dados. Este tópico pressupõe que você está familiarizado com o desenvolvimento usando C++ e começou recentemente a trabalhar com o Banco de Dados do Azure para MySQL.
Pré-requisitos
Este guia de início rápido usa os recursos criados em um destes guias como ponto de partida:
- Criar um servidor de Banco de Dados do Azure para MySQL usando o portal do Azure
- Criar um servidor de Banco de Dados do Azure para MySQL usando a CLI do Azure
Você também precisará:
- Instalar o .NET Framework
- Instalar o Visual Studio
- Instalar o Conector MySQL/C++
- Instalar Boost
Importante
Verifique se o endereço IP do qual você está se conectando foi adicionado às regras de firewall do servidor usando o portal do Azure ou a CLI do Azure
Instalar o Visual Studio e o .NET
As etapas nesta seção pressupõem que você esteja familiarizado com desenvolvimento usando o .NET.
Windows
- Instalar o Visual Studio 2019 Community. O Visual Studio 2019 Community é um IDE completo, extensível e gratuito. Com esse IDE, você pode criar aplicativos modernos para Android, iOS, Windows, Web e aplicativos de banco de dados e serviços de nuvem. É possível instalar o .NET Framework completo ou apenas o .NET Core: os snippets de código no Início rápido funcionam com qualquer um. Se você já tiver o Visual Studio instalado em seu computador, ignore as duas etapas a seguir.
- Baixe o instalador do Visual Studio 2019.
- Execute o instalador e siga os prompts de instalação para concluir a instalação.
Configurar o Visual Studio
- No Visual Studio, Projeto -> Propriedades -> Vinculador -> Geral > Diretórios Adicionais da Biblioteca, adicione o diretório "\lib\opt" (por exemplo, C:\Program Files (x86)\MySQL\MySQL Connector C++ 1.1.9\lib\opt) do conector do C++.
- No Visual Studio, Projeto -> Propriedades -> C/C++ -> Geral -> Diretórios Adicionais de Inclusão:
- Adicione o diretório "\include" do conector do C++ (por exemplo: C:\Arquivos de Programas (x86)\MySQL\MySQL Connector C++ 1.1.9\include).
- Adicione o diretório raiz da biblioteca Boost (por exemplo: C:\boost_1_64_0).
- No Visual Studio, Projeto -> Propriedades -> Vinculador -> Entrada > Dependências Adicionais, adicione mysqlcppconn.lib ao campo de texto.
- Copie mysqlcppconn.dll na pasta da biblioteca do conector do C++ na etapa 3 para o mesmo diretório do executável do aplicativo ou adicione-o à variável de ambiente para que seu aplicativo possa localizá-lo.
Obter informações de conexão
Obtenha as informações de conexão necessárias para se conectar ao Banco de Dados do Azure para MySQL. Você precisa das credenciais de logon e do nome do servidor totalmente qualificado.
- Entre no portal do Azure.
- No menu à esquerda no portal do Azure, clique em Todos os recursos e pesquise o servidor que você criou (como mydemoserver).
- Clique no nome do servidor.
- No painel Visão Geral do servidor, anote o Nome do servidor e Nome de logon do administrador do servidor. Se você esquecer sua senha, também poderá redefini-la nesse painel.
Conectar-se, criar tabela e inserir dados
Use o código a seguir para se conectar e carregar os dados usando as instruções SQL CREATE TABLE e INSERT INTO. O código usa a classe sql::Driver com o método connect() para estabelecer uma conexão com o MySQL. Em seguida, o código usa os métodos createStatement() e execute() para executar os comandos do banco de dados.
Substitua os parâmetros Host, DBName, User e Password. Substitua os parâmetros pelos valores que você especificou quando criou o servidor e o banco de dados.
#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;
}
Ler dados
Use o código a seguir para conectar-se e ler os dados usando uma instrução SQL SELECT. O código usa a classe sql::Driver com o método connect() para estabelecer uma conexão com o MySQL. Em seguida, o código usa os métodos prepareStatement() e executeQuery() para executar os comandos de seleção. Em seguida, o código usa next() para prosseguir com os registros nos resultados. Por fim, o código usa getInt() e getString() para analisar os valores no registro.
Substitua os parâmetros Host, DBName, User e Password. Substitua os parâmetros pelos valores que você especificou quando criou o servidor e o banco de dados.
#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;
}
Atualizar dados
Use o código a seguir para conectar-se e ler os dados usando uma instrução SQL UPDATE. O código usa a classe sql::Driver com o método connect() para estabelecer uma conexão com o MySQL. Então, o código usa os métodos prepareStatement() e executeQuery() para executar os comandos de atualização.
Substitua os parâmetros Host, DBName, User e Password. Substitua os parâmetros pelos valores que você especificou quando criou o servidor e o banco de dados.
#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;
}
Excluir dados
Use o código a seguir para conectar-se e ler os dados usando uma instrução SQL DELETE. O código usa a classe sql::Driver com o método connect() para estabelecer uma conexão com o MySQL. Então, o código usa os métodos prepareStatement() e executeQuery() para executar os comandos de exclusão.
Substitua os parâmetros Host, DBName, User e Password. Substitua os parâmetros pelos valores que você especificou quando criou o servidor e o banco de dados.
#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;
}
Limpar os recursos
Para limpar todos os recursos usados durante este guia de início rápido, exclua o grupo de recursos usando o seguinte comando:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes