Guida introduttiva: Usare Node.js per connettersi ed eseguire query sui dati in Database di Azure per MySQL

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux vicina allo stato end of life (EOL). Prendere in considerazione l'uso e la pianificazione di conseguenza. Per altre informazioni, vedere le linee guida per la fine della vita di CentOS.

SI APPLICA A: Database di Azure per MySQL - Server singolo

Importante

Database di Azure per MySQL server singolo si trova nel percorso di ritiro. È consigliabile eseguire l'aggiornamento a Database di Azure per MySQL server flessibile. Per altre informazioni sulla migrazione a Database di Azure per MySQL server flessibile, vedere Che cosa accade a Database di Azure per MySQL server singolo?

In questo argomento di avvio rapido ci si connette a un'istanza di Database di Azure per MySQL usando Node.js. Si usano quindi 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.

Prerequisiti

Importante

Verificare che l'indirizzo IP da cui ci si sta connettendo sia stato aggiunto alle regole del firewall del server usando il portale di Azure o 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 nel momento in cui vengono rilasciate nuove patch.

Ottenere informazioni di connessione

Ottenere le informazioni di connessione necessarie per connettersi al 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. Nome del server del database di Azure per MySQL

Esecuzione degli esempi di codice

  1. Incollare il codice JavaScript in nuovi file di testo e quindi salvarlo in una cartella del progetto con estensione di file .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 e del database.

  3. Ottenere il certificato SSL: scaricare il certificato necessario per comunicare tramite SSL con il server Database di Azure per MySQL da https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem e salvare il file del certificato nell'unità locale.

    Per Microsoft Internet Explorer e Microsoft Edge: al termine del download, rinominare il certificato in DigiCertGlobalRootCA.crt.pem.

    Vedere i collegamenti seguenti per i certificati per i server nei cloud sovrani: Azure per enti pubblici, Microsoft Azure gestito da 21Vianet e Azure Germania.

  4. Nell'opzione ssl config sostituire il ca-cert nome file con il percorso del file locale.

  5. Aprire il prompt dei comandi o la shell Bash e quindi passare alla cartella del progetto cd nodejsmysql.

  6. Per eseguire l'applicazione, digitare il comando node seguito dal nome del file, ad esempio node createtable.js.

  7. 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 l'interfaccia con il server 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: '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.')
    });
};

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 l'interfaccia con il server 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: '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.')
    });
};

Aggiornamento dei dati

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

Il metodo mysql.createConnection() viene usato per l'interfaccia con il server 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: '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.')
        });
};

Eliminare dati

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

Il metodo mysql.createConnection() viene usato per l'interfaccia con il server 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: '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.')
        });
};

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

Passaggi successivi