Partilhar via


Guia de início rápido: usar o Node.js para conectar e consultar dados no Banco de Dados do Azure para MySQL - Servidor Flexível

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

Neste início rápido, você se conecta ao Banco de Dados do Azure para servidor flexível MySQL usando 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 familiarizado com o desenvolvimento usando o Node.js, mas é novo no trabalho com o Banco de Dados do Azure para o servidor flexível MySQL.

Pré-requisitos

Este guia de início rápido utiliza os recursos criados em qualquer 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 Node.js e o conector de MySQL

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

  1. Visite a página de transferências do Node. js e, em seguida, selecione a opção de instalador Windows que pretende.

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

  3. Abra o prompt de comando e, em seguida, altere o diretório para a 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 verificando o texto de npm list saída. O número da versão pode variar à medida que forem sendo lançados patches novos.

Obter informações da ligação

Obtenha as informações de conexão necessárias para se conectar à instância de servidor flexível do Banco de Dados do Azure para MySQL. Você precisa do nome do servidor totalmente qualificado e das credenciais de login.

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

Executar os exemplos de código

  1. Cole o código JavaScript em novos arquivos de texto e salve-o em uma pasta de projeto com .js de extensão de arquivo (como C:\nodejsmysql\createtable.js ou /home/username/nodejsmysql/createtable.js).
  2. Substitua host, userpassword e database opções de configuração no código com os valores que você especificou quando criou o servidor flexível MySQL e banco de dados.
  3. Obter 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 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 de certificado no local de sua preferência.

  1. ssl Na opção config, substitua o nome do ca-cert arquivo pelo caminho para esse arquivo local. Isso permitirá que o aplicativo se conecte com segurança ao banco de dados por SSL.
  2. Abra o prompt de comando ou shell bash e, em seguida, altere o diretório para a pasta cd nodejsmysqldo projeto .
  3. Para executar o aplicativo, digite o comando node seguido pelo nome do arquivo, como node createtable.js.
  4. No Windows, se o aplicativo de nó não estiver no caminho da variável de ambiente, talvez seja necessário usar o caminho completo para iniciar o aplicativo de nó, como "C:\Program Files\nodejs\node.exe" createtable.js

Ligar, criar tabela e inserir dados

Utilize o seguinte código para se ligar e carregar os dados com as instruções SQL CREATE TABLE e INSERT INTO.

O método mysql.createConnection() é usado para fazer interface com o Banco de Dados do Azure para instância de servidor flexível do MySQL. A função connect() é utilizada para estabelecer a ligação ao servidor. A função query() é utilizada para executar a consulta SQL na base 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

Utilize o código seguinte para se ligar e ler dados com uma instrução SQL SELECT.

O método mysql.createConnection() é usado para fazer interface com o Banco de Dados do Azure para instância de servidor flexível do MySQL. O método connect() é utilizado para estabelecer a ligação ao servidor. O método query() é utilizado para executar a consulta SQL na base de dados MySQL. A matriz de resultados é utilizada 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

Utilize o código seguinte para se ligar e atualizar os dados com uma instrução SQL UPDATE.

O método mysql.createConnection() é usado para fazer interface com o Banco de Dados do Azure para instância de servidor flexível do MySQL. O método connect() é utilizado para estabelecer a ligação ao servidor. O método query() é utilizado para executar a consulta SQL na base 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.')
        });
};

Eliminar dados

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

O método mysql.createConnection() é usado para fazer interface com o Banco de Dados do Azure para instância de servidor flexível do MySQL. O método connect() é utilizado para estabelecer a ligação ao servidor. O método query() é utilizado para executar a consulta SQL na base 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.')
        });
};

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

Próximos passos