Guia de início rápido: use o .NET (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 de desativação. É altamente recomendável que você atualize para o Banco de Dados do Azure para o servidor flexível MySQL. Para obter mais informações sobre como migrar para o Banco de Dados do Azure para servidor flexível MySQL, consulte O que está acontecendo com o Banco de Dados do Azure para Servidor Único MySQL?
Este guia de introdução explica como se pode ligar a uma Base de Dados do Azure para MySQL através de uma aplicação C#. Explica como utilizar as instruções SQL para consultar, inserir, atualizar e eliminar dados da base de dados.
Pré-requisitos
Para este guia de início rápido, você precisa:
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Criar um Banco de Dados do Azure para servidor único MySQL usando o portal do Azure
ou CLI do Azure, se você não tiver uma. - Com base no fato de você estar usando o acesso público ou privado, conclua UMA das ações abaixo para habilitar a conectividade.
- Instale o SDK do .NET para sua plataforma (Windows, Ubuntu Linux ou macOS) para sua plataforma .
Ação | Método de conectividade | Manual de instruções |
---|---|---|
Configurar as regras de firewall | Pública | Portal CLI |
Configurar o ponto de extremidade do serviço | Pública | Portal CLI |
Configurar link privado | Privado | Portal CLI |
Criar um projeto em C#
Numa linha de comandos, execute:
mkdir AzureMySqlExample
cd AzureMySqlExample
dotnet new console
dotnet add package MySqlConnector
Obter informações da ligação
Obtenha as informações de ligação necessárias para se ligar à Base de Dados do Azure para MySQL. Necessita do nome do servidor e das credenciais de início de sessão totalmente qualificados.
- Inicie sessão no portal do Azure.
- No menu esquerdo do portal do Azure, clique em Todos os recursos e, em seguida, procure o servidor que acabou de criar, (por exemplo, mydemoserver).
- Clique no nome do servidor.
- No painel Descrição geral do servidor, tome nota do Nome do servidor e do Nome de início de sessão de administrador do servidor. Caso se esqueça da sua palavra-passe, também pode repor a palavra-passe neste painel.
Etapa 1: Conectar e inserir dados
Use o código a seguir para conectar e carregar os dados usando CREATE TABLE
instruções e INSERT INTO
SQL. O código usa os métodos da MySqlConnection
classe:
- OpenAsync() para estabelecer uma conexão com o MySQL.
- CreateCommand(), define a propriedade CommandText
- ExecuteNonQueryAsync() para executar os comandos do banco de dados.
Substitua os parâmetros Server
, Database
, UserID
, e Password
pelos valores que especificou quando criar o servidor e a base de dados.
using System;
using System.Threading.Tasks;
using MySqlConnector;
namespace AzureMySqlExample
{
class MySqlCreate
{
static async Task Main(string[] args)
{
var builder = new MySqlConnectionStringBuilder
{
Server = "YOUR-SERVER.mysql.database.azure.com",
Database = "YOUR-DATABASE",
UserID = "USER@YOUR-SERVER",
Password = "PASSWORD",
SslMode = MySqlSslMode.Required,
};
using (var conn = new MySqlConnection(builder.ConnectionString))
{
Console.WriteLine("Opening connection");
await conn.OpenAsync();
using (var command = conn.CreateCommand())
{
command.CommandText = "DROP TABLE IF EXISTS inventory;";
await command.ExecuteNonQueryAsync();
Console.WriteLine("Finished dropping table (if existed)");
command.CommandText = "CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);";
await command.ExecuteNonQueryAsync();
Console.WriteLine("Finished creating table");
command.CommandText = @"INSERT INTO inventory (name, quantity) VALUES (@name1, @quantity1),
(@name2, @quantity2), (@name3, @quantity3);";
command.Parameters.AddWithValue("@name1", "banana");
command.Parameters.AddWithValue("@quantity1", 150);
command.Parameters.AddWithValue("@name2", "orange");
command.Parameters.AddWithValue("@quantity2", 154);
command.Parameters.AddWithValue("@name3", "apple");
command.Parameters.AddWithValue("@quantity3", 100);
int rowCount = await command.ExecuteNonQueryAsync();
Console.WriteLine(String.Format("Number of rows inserted={0}", rowCount));
}
// connection will be closed by the 'using' block
Console.WriteLine("Closing connection");
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
Passo 2: Ler dados
Utilize o código seguinte para se ligar e ler os dados com uma instrução SQL SELECT
. O código usa a MySqlConnection
classe com métodos:
- OpenAsync() para estabelecer uma conexão com o MySQL.
- CreateCommand() para definir a propriedade CommandText.
- ExecuteReaderAsync() para executar os comandos do banco de dados.
- ReadAsync() para avançar para os registros nos resultados. Em seguida, o código utiliza GetInt32 e GetString para analisar os valores do registo.
Substitua os parâmetros Server
, Database
, UserID
, e Password
pelos valores que especificou quando criar o servidor e a base de dados.
using System;
using System.Threading.Tasks;
using MySqlConnector;
namespace AzureMySqlExample
{
class MySqlRead
{
static async Task Main(string[] args)
{
var builder = new MySqlConnectionStringBuilder
{
Server = "YOUR-SERVER.mysql.database.azure.com",
Database = "YOUR-DATABASE",
UserID = "USER@YOUR-SERVER",
Password = "PASSWORD",
SslMode = MySqlSslMode.Required,
};
using (var conn = new MySqlConnection(builder.ConnectionString))
{
Console.WriteLine("Opening connection");
await conn.OpenAsync();
using (var command = conn.CreateCommand())
{
command.CommandText = "SELECT * FROM inventory;";
using (var reader = await command.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
Console.WriteLine(string.Format(
"Reading from table=({0}, {1}, {2})",
reader.GetInt32(0),
reader.GetString(1),
reader.GetInt32(2)));
}
}
}
Console.WriteLine("Closing connection");
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
Etapa 3: Atualizar dados
Utilize o código seguinte para se ligar e ler os dados com uma instrução SQL UPDATE
. O código usa a classe com método MySqlConnection
:
- OpenAsync() para estabelecer uma conexão com o MySQL.
- CreateCommand() para definir a propriedade CommandText
- ExecuteNonQueryAsync() para executar os comandos do banco de dados.
Substitua os parâmetros Server
, Database
, UserID
, e Password
pelos valores que especificou quando criar o servidor e a base de dados.
using System;
using System.Threading.Tasks;
using MySqlConnector;
namespace AzureMySqlExample
{
class MySqlUpdate
{
static async Task Main(string[] args)
{
var builder = new MySqlConnectionStringBuilder
{
Server = "YOUR-SERVER.mysql.database.azure.com",
Database = "YOUR-DATABASE",
UserID = "USER@YOUR-SERVER",
Password = "PASSWORD",
SslMode = MySqlSslMode.Required,
};
using (var conn = new MySqlConnection(builder.ConnectionString))
{
Console.WriteLine("Opening connection");
await conn.OpenAsync();
using (var command = conn.CreateCommand())
{
command.CommandText = "UPDATE inventory SET quantity = @quantity WHERE name = @name;";
command.Parameters.AddWithValue("@quantity", 200);
command.Parameters.AddWithValue("@name", "banana");
int rowCount = await command.ExecuteNonQueryAsync();
Console.WriteLine(String.Format("Number of rows updated={0}", rowCount));
}
Console.WriteLine("Closing connection");
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
Etapa 4: Excluir dados
Utilize o código seguinte para se ligar e eliminar os dados com uma instrução SQL DELETE
.
O código usa a MySqlConnection
classe com método
- OpenAsync() para estabelecer uma conexão com o MySQL.
- CreateCommand() para definir a propriedade CommandText.
- ExecuteNonQueryAsync() para executar os comandos do banco de dados.
Substitua os parâmetros Server
, Database
, UserID
, e Password
pelos valores que especificou quando criar o servidor e a base de dados.
using System;
using System.Threading.Tasks;
using MySqlConnector;
namespace AzureMySqlExample
{
class MySqlDelete
{
static async Task Main(string[] args)
{
var builder = new MySqlConnectionStringBuilder
{
Server = "YOUR-SERVER.mysql.database.azure.com",
Database = "YOUR-DATABASE",
UserID = "USER@YOUR-SERVER",
Password = "PASSWORD",
SslMode = MySqlSslMode.Required,
};
using (var conn = new MySqlConnection(builder.ConnectionString))
{
Console.WriteLine("Opening connection");
await conn.OpenAsync();
using (var command = conn.CreateCommand())
{
command.CommandText = "DELETE FROM inventory WHERE name = @name;";
command.Parameters.AddWithValue("@name", "orange");
int rowCount = await command.ExecuteNonQueryAsync();
Console.WriteLine(String.Format("Number of rows deleted={0}", rowCount));
}
Console.WriteLine("Closing connection");
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
Clean up resources (Limpar recursos)
Para limpar todos os recursos usados durante este início rápido, exclua o grupo de recursos usando o seguinte comando:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes