Início Rápido: Usar o Node.js para conectar e consultar dados no Banco de Dados do Azure para MySQL

Cuidado

Este artigo faz referência ao CentOS, uma distribuição do Linux que está se aproximando do status de EOL (fim da vida útil). Considere seu uso e planejamento adequadamente. Para obter mais informações, confira as Diretrizes de Fim do Suporte do CentOS.

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?

Neste início rápido, você se conectará a um 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ê está familiarizado com o desenvolvimento usando Node.js, mas começou recentemente a trabalhar com o Banco de Dados do Azure para MySQL.

Pré-requisitos

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 do mysql2 na pasta de 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 ao Banco de Dados do Azure para MySQL. Você precisa das credenciais de logon e do nome do servidor totalmente qualificado.

  1. Faça logon 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. Nome do servidor do Banco de Dados do Azure para MySQL

Executando os exemplos 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 e o banco de dados.

  3. Obter o certificado SSL: baixe o certificado necessário para comunicação via SSL com o servidor do Banco de Dados do Azure para MySQL de https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem e salve o arquivo de certificado no disco local.

    Para o Microsoft Internet Explorer e Microsoft Edge: depois que o download for concluído, renomeie o certificado para DigiCertGlobalRootCA.crt.pem.

    Da mesma forma, os links a seguir apontam para certificados de servidores em nuvens soberanas: Azure Governamental, Azure operado pela 21Vianet e Azure Alemanha.

  4. Na opção de configuração ssl, substitua o nome de arquivo ca-certpelo caminho para esse arquivo local.

  5. Abra o prompt de comando ou shell do Bash e altere o diretório para a pasta do projeto cd nodejsmysql.

  6. Para executar o aplicativo, insira o comando de nó seguido pelo nome do arquivo, como node createtable.js.

  7. 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 como interface com o servidor 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: 'mydemoserver.mysql.database.azure.com',
    user: 'myadmin@mydemoserver',
    password: 'your_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', 154],
            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 como interface com o servidor 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: 'mydemoserver.mysql.database.azure.com',
    user: 'myadmin@mydemoserver',
    password: 'your_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 como interface com o servidor 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: 'mydemoserver.mysql.database.azure.com',
    user: 'myadmin@mydemoserver',
    password: 'your_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 = ?', [200, '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 como interface com o servidor 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: 'mydemoserver.mysql.database.azure.com',
    user: 'myadmin@mydemoserver',
    password: 'your_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