Delen via


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

In deze quickstart maakt u verbinding met Azure Database for MySQL Flexible Server 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 Flexible Server.

Vereisten

In deze snelstartgids worden de resources die in een van deze handleidingen zijn gemaakt, als uitgangspunt gebruikt:

Belangrijk

Zorg ervoor dat het IP-adres waarmee u verbinding maakt, is toegevoegd aan de firewallregels van de server met behulp van de firewallregels beheren voor Azure Database for MySQL - Flexible Server met behulp van De Azure-portal of firewallregels beheren voor Azure Database for MySQL - Flexible Server met behulp van 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 NPM-hulpprogramma 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 wanneer er nieuwe patches worden uitgebracht.

Verbindingsgegevens ophalen

Haal de verbindingsgegevens op die nodig zijn om verbinding te maken met het exemplaar van Azure Database for MySQL Flexible Server. U hebt de volledig gekwalificeerde servernaam en aanmeldingsreferenties nodig.

  1. Meld u aan bij het Azure-portaal.
  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.

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 MySQL Flexible Server en database.
  3. SSL-certificaat verkrijgen: als u versleutelde verbindingen met uw clienttoepassingen wilt gebruiken, moet u het openbare SSL-certificaat downloaden dat ook beschikbaar is op de blade Netwerken in Azure Portal, zoals wordt weergegeven in de onderstaande schermopname.

Sla het certificaatbestand op de gewenste locatie op.

  1. Vervang in de ssl configuratieoptie de ca-cert bestandsnaam door het pad naar dit lokale bestand. Hierdoor kan de toepassing veilig verbinding maken met de database via SSL.
  2. Open de opdrachtprompt of Bash-shell en wijzig vervolgens de map in uw projectmap cd nodejsmysql.
  3. Voer de knooppuntopdracht, gevolgd door de bestandsnaam node createtable.js in om de toepassing uit te voeren.
  4. 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 te interfacen met het azure Database for MySQL Flexible Server-exemplaar. 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: '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.')
    });
};

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 te interfacen met het azure Database for MySQL Flexible Server-exemplaar. 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: '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.')
    });
};

Gegevens bijwerken

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

De methode mysql.createConnection() wordt gebruikt om te interfacen met het azure Database for MySQL Flexible Server-exemplaar. 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: '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.')
        });
};

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 te interfacen met het azure Database for MySQL Flexible Server-exemplaar. 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: '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.')
        });
};

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