Compartilhar via


Início Rápido: usar o Node.js para se conectar ao Banco de Dados do Azure para MySQL – Servidor Flexível e consultar dados dele

APLICA-SE A: Banco de Dados do Azure para MySQL – Servidor flexível

Neste início rápido, será possível se conectar a um servidor flexível do Banco de Dados do Azure para MySQL usando o Node.js. Em seguida, você usa instruções SQL para consultar, inserir, atualizar e excluir dados no banco de dados das plataformas Mac, Linux e Windows.

Este artigo pressupõe que você esteja acostumado a desenvolver usando Node.js, mas não tem experiência em trabalhar com o servidor flexível do 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:

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 conector do MySQL e o Node.js

Dependendo de sua plataforma, siga as instruções na seção apropriada para instalar o Node.js. Use o NPM para instalar o pacote mysql2 e suas dependências na pasta do seu projeto.

  1. Acesse a página de downloads do Node. js e selecione a opção do Windows Installer desejada.

  2. Crie uma pasta de projeto local, como nodejsmysql.

  3. Abra o prompt de comando e, em seguida, altere o diretório na pasta do projeto, como cd c:\nodejsmysql\

  4. Execute a ferramenta NPM para instalar a biblioteca mysql2 na pasta do projeto.

    cd c:\nodejsmysql\
    "C:\Program Files\nodejs\npm" install mysql2
    "C:\Program Files\nodejs\npm" list
    
  5. Verifique a instalação conferindo a saída de texto npm list. O número de versão pode variar quando novos patches são publicados.

Obter informações de conexão

Obtenha as informações de conexão necessárias para se conectar à instância do servidor flexível do Banco de Dados do Azure para MySQL. Será necessário obter um nome do servidor totalmente qualificado e as credenciais de entrada.

  1. Entre no portal do Azure.
  2. No menu à esquerda no portal do Azure, selecione Todos os recursos e pesquise o servidor que você criou (como mydemoserver).
  3. Selecione o nome do servidor.
  4. 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.

Executar amostras de código

  1. Cole o código JavaScript em novos arquivos de texto e salve-os em uma pasta de projeto com extensão de arquivo .js (como C:\nodejsmysql\createtable.js ou /home/username/nodejsmysql/createtable.js).
  2. Substitua as opções de configuração host, user, password e database no código pelos valores que você especificou quando criou o servidor flexível MySQL e o banco de dados.
  3. Obtenha um certificado SSL: para usar conexões criptografadas com seus aplicativos cliente, você precisará baixar o certificado SSL público que também está disponível na folha de Rede do portal do Azure, conforme mostrado na captura de tela abaixo. Captura de tela mostrando como baixar o certificado SSL público do portal do Azure.

Salve o arquivo do certificado em seu local de preferência.

  1. Na opção de configuração ssl, substitua o nome de arquivo ca-certpelo caminho para esse arquivo local. Isso permitirá que os aplicativos se conectem com segurança ao banco de dados por SSL.
  2. Abra o prompt de comando ou shell do Bash e altere o diretório para a pasta do projeto cd nodejsmysql.
  3. Para executar o aplicativo, insira o comando de nó seguido pelo nome do arquivo, como node createtable.js.
  4. No Windows, se o aplicativo de nó não estiver no caminho de variável do seu ambiente, você precisará usar o caminho completo para iniciar o aplicativo de nó, como, por exemplo, "C:\Program Files\nodejs\node.exe" createtable.js

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 método mysql.createConnection() é usado para se conectar à instância do servidor flexível do Banco de Dados do Azure para MySQL. A função connect() é usada para estabelecer a conexão com o servidor. A função query () é usada para executar a consulta SQL no banco de dados MySQL.

const mysql = require('mysql2');
const fs = require('fs');

var config =
{
    host: 'your_server_name.mysql.database.azure.com',
    user: 'your_admin_name',
    password: 'your_admin_password',
    database: 'quickstartdb',
    port: 3306,
    ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};

const conn = new mysql.createConnection(config);

conn.connect(
    function (err) {
    if (err) {
        console.log("!!! Cannot connect !!! Error:");
        throw err;
    }
    else
    {
        console.log("Connection established.");
        queryDatabase();
    }
});

function queryDatabase()
{
    conn.query('DROP TABLE IF EXISTS inventory;',
        function (err, results, fields) {
            if (err) throw err;
            console.log('Dropped inventory table if existed.');
        }
    )
    conn.query('CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);',
        function (err, results, fields) {
            if (err) throw err;
            console.log('Created inventory table.');
        }
    )
    conn.query('INSERT INTO inventory (name, quantity) VALUES (?, ?);', ['banana', 150],
        function (err, results, fields) {
            if (err) throw err;
            else console.log('Inserted ' + results.affectedRows + ' row(s).');
        }
    )
    conn.query('INSERT INTO inventory (name, quantity) VALUES (?, ?);', ['orange', 250],
        function (err, results, fields) {
            if (err) throw err;
            console.log('Inserted ' + results.affectedRows + ' row(s).');
        }
    )
    conn.query('INSERT INTO inventory (name, quantity) VALUES (?, ?);', ['apple', 100],
        function (err, results, fields) {
            if (err) throw err;
            console.log('Inserted ' + results.affectedRows + ' row(s).');
        }
    )
    conn.end(function (err) {
        if (err) throw err;
        else  console.log('Done.')
    });
};

Ler dados

Use o código a seguir para conectar-se e ler os dados usando uma instrução SQL SELECT.

O método mysql.createConnection() é usado para se conectar à instância do servidor flexível do Banco de Dados do Azure para MySQL. O método connect() é usado para estabelecer a conexão com o servidor. O método query() é usado para executar a consulta SQL no banco de dados MySQL. A matriz de resultados é usada para armazenar os resultados da consulta.

const mysql = require('mysql2');
const fs = require('fs');

var config =
{
    host: 'your_server_name.mysql.database.azure.com',
    user: 'your_admin_name',
    password: 'your_admin_password',
    database: 'quickstartdb',
    port: 3306,
    ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};

const conn = new mysql.createConnection(config);

conn.connect(
    function (err) {
        if (err) {
            console.log("!!! Cannot connect !!! Error:");
            throw err;
        }
        else {
            console.log("Connection established.");
            readData();
        }
    });

function readData(){
    conn.query('SELECT * FROM inventory',
        function (err, results, fields) {
            if (err) throw err;
            else console.log('Selected ' + results.length + ' row(s).');
            for (i = 0; i < results.length; i++) {
                console.log('Row: ' + JSON.stringify(results[i]));
            }
            console.log('Done.');
        })
    conn.end(
        function (err) {
            if (err) throw err;
            else  console.log('Closing connection.')
    });
};

Atualizar dados

Use o código a seguir para conectar-se e atualizar os dados usando uma instrução SQL UPDATE.

O método mysql.createConnection() é usado para se conectar à instância do servidor flexível do Banco de Dados do Azure para MySQL. O método connect() é usado para estabelecer a conexão com o servidor. O método query() é usado para executar a consulta SQL no banco de dados MySQL.

const mysql = require('mysql2');
const fs = require('fs');

var config =
{
    host: 'your_server_name.mysql.database.azure.com',
    user: 'your_admin_name',
    password: 'your_admin_password',
    database: 'quickstartdb',
    port: 3306,
    ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};

const conn = new mysql.createConnection(config);

conn.connect(
    function (err) {
        if (err) {
            console.log("!!! Cannot connect !!! Error:");
            throw err;
        }
        else {
            console.log("Connection established.");
            updateData();
        }
    });

function updateData(){
       conn.query('UPDATE inventory SET quantity = ? WHERE name = ?', [75, 'banana'],
            function (err, results, fields) {
                if (err) throw err;
                else console.log('Updated ' + results.affectedRows + ' row(s).');
           })
       conn.end(
           function (err) {
                if (err) throw err;
                else  console.log('Done.')
        });
};

Excluir dados

Use o código a seguir para conectar-se e excluir os dados usando uma instrução SQL DELETE.

O método mysql.createConnection() é usado para se conectar à instância do servidor flexível do Banco de Dados do Azure para MySQL. O método connect() é usado para estabelecer a conexão com o servidor. O método query() é usado para executar a consulta SQL no banco de dados MySQL.

const mysql = require('mysql2');
const fs = require('fs');

var config =
{
    host: 'your_server_name.mysql.database.azure.com',
    user: 'your_admin_name',
    password: 'your_admin_password',
    database: 'quickstartdb',
    port: 3306,
    ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};

const conn = new mysql.createConnection(config);

conn.connect(
    function (err) {
        if (err) {
            console.log("!!! Cannot connect !!! Error:");
            throw err;
        }
        else {
            console.log("Connection established.");
            deleteData();
        }
    });

function deleteData(){
       conn.query('DELETE FROM inventory WHERE name = ?', ['orange'],
            function (err, results, fields) {
                if (err) throw err;
                else console.log('Deleted ' + results.affectedRows + ' row(s).');
           })
       conn.end(
           function (err) {
                if (err) throw err;
                else  console.log('Done.')
        });
};

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

Próximas etapas