Avvio rapido: usare Node.js per connettersi a dati ed eseguirvi query nel Database di Azure per MySQL
Attenzione
Questo articolo fa riferimento a CentOS, una distribuzione di Linux che ha raggiunto lo stato di fine del servizio (EOL). Valutare le proprie esigenze e pianificare di conseguenza. Per ulteriori informazioni, consultare la Guida alla fine del ciclo di vita di CentOS.
SI APPLICA A: Database di Azure per MySQL - Server singolo
Importante
Il server singolo del Database di Azure per MySQL è in fase di ritiro. È consigliabile eseguire l'aggiornamento al server flessibile del Database di Azure per MySQL. Per altre informazioni sulla migrazione a un server flessibile del Database di Azure per MySQL, vedere Che cosa sta succedendo al server singolo del Database di Azure per MySQL?
In questo argomento di avvio rapido ci si connette a un'istanza di Database di Azure per MySQL 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 con Database di Azure per MySQL.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Un'istanza di Database di Azure per il server MySQL. Creare un database di Azure per il server MySQL tramite il portale di Azure o Creare un database di Azure per il server MySQL tramite l'interfaccia della riga di comando di Azure.
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.
Visitare la pagina di download di Node.js e quindi selezionare l'opzione di installazione di Windows desiderata.
Creare una cartella di progetto locale, ad esempio
nodejsmysql
.Aprire il prompt dei comandi e quindi passare alla cartella del progetto, ad esempio
cd c:\nodejsmysql\
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
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.
- Accedere al portale di Azure.
- Dal menu a sinistra nel portale di Azure scegliere Tutte le risorse e quindi cercare il server creato, ad esempio mydemoserver.
- Selezionare il nome del server.
- 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.
Esecuzione degli esempi di codice
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.
Sostituire le opzioni di configurazione
host
,user
,password
edatabase
nel codice con i valori specificati al momento della creazione del server e del database.Ottenere il certificato SSL: scaricare il certificato necessario per comunicare tramite SSL con il server di 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 certificati per server in cloud sovrani: Azure per enti pubblici, Microsoft Azure gestito da 21Vianet e Azure Germania.
Nell'opzione di configurazione
ssl
sostituire il nome fileca-cert
con il percorso del file locale.Aprire il prompt dei comandi o la shell Bash e quindi passare alla cartella del progetto
cd nodejsmysql
.Per eseguire l'applicazione, digitare il comando node seguito dal nome del file, ad esempio
node createtable.js
.In Windows, se l'applicazione Node non è presente nella variabile di ambiente PATH 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 dati usando un'istruzione SQL UPDATE.
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