Condividi tramite


Guida introduttiva: Usare Node.js per connettersi ai dati ed eseguire query nel server flessibile di Database di Azure per MySQL

In questo argomento di avvio rapido si esegue la connessione a Database di Azure per MySQL server flessibile usando Node.js. È quindi possibile usare istruzioni SQL per eseguire query, inserire, aggiornare ed eliminare dati nel database dalle piattaforme Mac, Linux e Windows.

Questo articolo presuppone che si abbia familiarità con lo sviluppo con Node.js, ma non si ha familiarità con Database di Azure per MySQL server flessibile.

Prerequisiti

Questa guida introduttiva usa le risorse create in una delle guide seguenti come punto di partenza:

Importante

Assicurarsi che l'indirizzo IP da cui ci si connette sia stato aggiunto le regole del firewall del server usando le regole del firewall di gestione per Database di Azure per MySQL - Server flessibile usando il portale di Azure o Gestire le regole del firewall per Database di Azure per MySQL - Server flessibile tramite l'interfaccia della riga di comando di Azure

Installare Node.js e il connettore MySQL

A seconda della piattaforma, seguire le istruzioni nella sezione appropriata per installare Node.js. Usare npm per installare il pacchetto mysql2 e le relative dipendenze nella cartella del progetto.

  1. Visitare la pagina di download di Node.js e quindi selezionare l'opzione di installazione di Windows desiderata.

  2. Creare una cartella di progetto locale, ad esempio nodejsmysql.

  3. Aprire il prompt dei comandi e quindi passare alla cartella del progetto, ad esempio cd c:\nodejsmysql\

  4. Eseguire lo strumento NPM per installare la libreria mysql2 nella cartella del progetto.

    cd c:\nodejsmysql\
    "C:\Program Files\nodejs\npm" install mysql2
    "C:\Program Files\nodejs\npm" list
    
  5. Verificare l'installazione controllando il testo di output npm list. Il numero di versione può variare man mano che vengono rilasciate nuove patch.

Ottenere informazioni di connessione

Ottenere le informazioni di connessione necessarie per connettersi all'istanza del server flessibile di Database di Azure per MySQL. Sono necessari il nome del server completo e le credenziali di accesso.

  1. Accedere al portale di Azure.
  2. Dal menu a sinistra nel portale di Azure scegliere Tutte le risorse e quindi cercare il server creato, ad esempio mydemoserver.
  3. Selezionare il nome del server.
  4. Nel pannello Panoramica del server prendere nota dei valori riportati in Nome server e Nome di accesso dell'amministratore server. Se si dimentica la password, in questo pannello è anche possibile reimpostarla.

Eseguire gli esempi di codice

  1. Incollare il codice JavaScript nei nuovi file di testo e quindi salvarli in una cartella di progetto con estensione js, ad esempio C:\nodejsmysql\createtable.js o /home/username/nodejsmysql/createtable.js.
  2. Sostituire hostle opzioni di configurazione , userpassword e database nel codice con i valori specificati al momento della creazione del server flessibile e del database MySQL.
  3. Ottenere il certificato SSL: per usare connessioni crittografate con le applicazioni client, è necessario scaricare il certificato SSL pubblico disponibile anche nel pannello Rete del portale di Azure, come illustrato nello screenshot seguente.

Salvare il file di certificato nella posizione preferita.

  1. Nell'opzione di configurazione ssl sostituire il nome file ca-cert con il percorso del file locale. Ciò consentirà all'applicazione di connettersi in modo sicuro al database tramite SSL.
  2. Aprire il prompt dei comandi o la shell Bash e quindi passare alla cartella del progetto cd nodejsmysql.
  3. Per eseguire l'applicazione, digitare il comando node seguito dal nome del file, ad esempio node createtable.js.
  4. In Windows, se l'applicazione node non si trova nel percorso della variabile di ambiente, potrebbe essere necessario usare il percorso completo per avviare l'applicazione node, ad esempio "C:\Program Files\nodejs\node.exe" createtable.js

Connettersi, creare tabelle e inserire dati

Usare il codice seguente per connettersi e caricare i dati usando le istruzioni SQL CREATE TABLE e INSERT INTO.

Il metodo mysql.createConnection() viene usato per interfacciarsi con l'istanza del server flessibile Database di Azure per MySQL. La funzione connect() viene usata per stabilire la connessione al server. La funzione query() viene usata per eseguire la query SQL sul database 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.')
    });
};

Leggere i dati

Usare il codice seguente per connettersi e leggere i dati usando un'istruzione SQL SELECT.

Il metodo mysql.createConnection() viene usato per interfacciarsi con l'istanza del server flessibile Database di Azure per MySQL. Il metodo connect() viene usato per stabilire la connessione al server. Il metodo query() viene usato per eseguire la query SQL sul database MySQL. La matrice dei risultati viene usata per contenere i risultati della query.

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.')
    });
};

Aggiornamento dei dati

Usare il codice seguente per connettersi e aggiornare i dati usando un'istruzione SQL UPDATE.

Il metodo mysql.createConnection() viene usato per interfacciarsi con l'istanza del server flessibile Database di Azure per MySQL. Il metodo connect() viene usato per stabilire la connessione al server. Il metodo query() viene usato per eseguire la query SQL sul database 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.')
        });
};

Eliminare dati

Usare il codice seguente per connettersi ed eliminare i dati usando un'istruzione SQL DELETE.

Il metodo mysql.createConnection() viene usato per interfacciarsi con l'istanza del server flessibile Database di Azure per MySQL. Il metodo connect() viene usato per stabilire la connessione al server. Il metodo query() viene usato per eseguire la query SQL sul database 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.')
        });
};

Pulire le risorse

Per pulire tutte le risorse usate in questo argomento di avvio rapido, eliminare il gruppo di risorse con il comando seguente:

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes