Condividi tramite


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

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 flessibile

In questa guida introduttiva si esegue la connessione a Database di Azure per MySQL server flessibile 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 server flessibile.

Prerequisiti

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

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 all'istanza del server flessibile 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 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 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 portale di Azure, come illustrato nello screenshot seguente. Screenshot che mostra come scaricare il certificato SSL pubblico da portale di Azure.

Salvare il file di certificato nella posizione preferita.

  1. Nell'opzione ssl config sostituire il ca-cert nome file 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.create Connessione ion() 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.create Connessione ion() 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.create Connessione ion() 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.create Connessione ion() 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

Passaggi successivi