Quickstart: Node.js gebruiken om verbinding te maken en query's uit te voeren op gegevens in Azure Database for MySQL

Let op

In dit artikel wordt verwezen naar CentOS, een Linux-distributie die de status End Of Life (EOL) nadert. Overweeg uw gebruik en planning dienovereenkomstig. Zie de Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.

VAN TOEPASSING OP: Azure Database for MySQL - enkele server

Belangrijk

Azure Database for MySQL enkele server bevindt zich op het buitengebruikstellingspad. We raden u ten zeerste aan een upgrade uit te voeren naar een flexibele Azure Database for MySQL-server. Zie Wat gebeurt er met Azure Database for MySQL Enkele server voor meer informatie over migreren naar Azure Database for MySQL Flexibele server ?

In deze quickstart maakt u verbinding met een Azure Database for MySQL met behulp van Node.js. Vervolgens gebruikt u SQL-instructies om gegevens in de database op te vragen, in te voegen, bij te werken en te verwijderen van Mac-, Linux- en Windows-platforms.

In dit artikel wordt ervan uitgegaan dat u bekend bent met het ontwikkelen met behulp van Node.js, maar u bent nog niet bekend met het werken met Azure Database for MySQL.

Vereisten

Belangrijk

Controleer of het IP-adres waarmee u verbinding maakt aan de firewallregels van de server is toegevoegd met Azure Portal of Azure CLI

Node.js en de MySQL-connector installeren

Afhankelijk van uw platform volgt u de instructies in het bijbehorende gedeelte voor het installeren van Node.js. Gebruik npm om het mysql2-pakket en de bijbehorende afhankelijkheden in uw projectmap te installeren.

  1. Ga naar de downloadpagina van Node.js en selecteer het gewenste Windows-installatieprogramma.

  2. Maak een lokale projectmap, zoals nodejsmysql.

  3. Open de opdrachtprompt en wijzig de map in de projectmap, zoals cd c:\nodejsmysql\

  4. Voer het hulpprogramma NPM uit om de mysql2-bibliotheek in de projectmap te installeren.

    cd c:\nodejsmysql\
    "C:\Program Files\nodejs\npm" install mysql2
    "C:\Program Files\nodejs\npm" list
    
  5. Controleer de installatie door de npm list-uitvoertekst te controleren. Het versienummer kan variëren als nieuwe patches worden vrijgegeven.

Verbindingsgegevens ophalen

Haal de verbindingsgegevens op die nodig zijn om verbinding te maken met de Azure Database voor MySQL. U hebt de volledig gekwalificeerde servernaam en aanmeldingsreferenties nodig.

  1. Meld u aan bij Azure Portal.
  2. Selecteer in het menu aan de linkerkant in de Azure-portal Alle resources en zoek naar de server die u hebt gemaakt (bijvoorbeeld mydemoserver).
  3. Selecteer de servernaam.
  4. Ga naar het venster Overzicht van de server en noteer de Servernaam en de Aanmeldingsnaam van de serverbeheerder. Als u uw wachtwoord vergeet, kunt u het wachtwoord in dit venster opnieuw instellen. Servernaam van Azure Database for MySQL

De codevoorbeelden uitvoeren

  1. Plak de JavaScript-code in nieuwe tekstbestanden en sla deze op in een projectmap met de bestandsextensie .js (zoals C:\nodejsmysql\createtable.js of /home/username/nodejsmysql/createtable.js).

  2. Vervang host, userpassword en database configuratieopties in de code door de waarden die u hebt opgegeven bij het maken van de server en database.

  3. SSL-certificaat verkrijgen: download het certificaat dat nodig is om via SSL te communiceren met uw Azure Database for MySQL-server en https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem sla het certificaatbestand op uw lokale station op.

    Voor Microsoft Internet Explorer en Microsoft Edge: Nadat het downloaden is voltooid, wijzigt u de naam van het certificaat in DigiCertGlobalRootCA.crt.pem.

    Zie de volgende koppelingen voor certificaten voor servers in onafhankelijke clouds: Azure Government, Microsoft Azure beheerd door 21Vianet en Azure Duitsland.

  4. Vervang in de ssl configuratieoptie de ca-cert bestandsnaam door het pad naar dit lokale bestand.

  5. Open de opdrachtprompt of Bash-shell en wijzig vervolgens de map in uw projectmap cd nodejsmysql.

  6. Voer de knooppuntopdracht, gevolgd door de bestandsnaam node createtable.js in om de toepassing uit te voeren.

  7. Als de knooppunttoepassing zich niet in het pad van de omgevingsvariabele bevindt, moet u in Windows mogelijk het volledige pad gebruiken om de knooppunttoepassing te starten, zoals "C:\Program Files\nodejs\node.exe" createtable.js

Verbinden, tabel maken en gegevens invoegen

Gebruik de volgende code om verbinding te maken en de gegevens te laden met behulp van de SQL-instructies CREATE TABLE en INSERT INTO.

De methode mysql.createConnection() wordt gebruikt om een koppeling te maken met de MySQL-server. De functie connect() wordt gebruikt om verbinding met de server te maken. De functie query() wordt gebruikt om de SQL-query uit te voeren op de MySQL-database.

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

Gegevens lezen

Gebruik de volgende code om verbinding te maken en de gegevens te lezen met behulp van de SQL-instructie SELECT.

De methode mysql.createConnection() wordt gebruikt om een koppeling te maken met de MySQL-server. De methode connect() wordt gebruikt om verbinding met de server te maken. De methode query() wordt gebruikt om de SQL-query uit te voeren op de MySQL-database. De resultatenmatrix wordt gebruikt om de resultaten van de query op te slaan.

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

Gegevens bijwerken

Gebruik de volgende code om verbinding te maken en gegevens bij te werken met behulp van een UPDATE SQL-instructie.

De methode mysql.createConnection() wordt gebruikt om een koppeling te maken met de MySQL-server. De methode connect() wordt gebruikt om verbinding met de server te maken. De methode query() wordt gebruikt om de SQL-query uit te voeren op de MySQL-database.

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

Gegevens verwijderen

Gebruik de volgende code om verbinding te maken en gegevens te verwijderen met behulp van een DELETE SQL-instructie.

De methode mysql.createConnection() wordt gebruikt om een koppeling te maken met de MySQL-server. De methode connect() wordt gebruikt om verbinding met de server te maken. De methode query() wordt gebruikt om de SQL-query uit te voeren op de MySQL-database.

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

Resources opschonen

Als u alle resources wilt opschonen die tijdens deze quickstart zijn gebruikt, verwijdert u de resourcegroep. Dit kan met de volgende opdracht:

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

Volgende stappen