Udostępnij za pośrednictwem


Szybki start: nawiązywanie połączeń i wykonywanie zapytań dotyczących danych w usłudze Azure Database for MySQL — serwer elastyczny przy użyciu Node.js

DOTYCZY: Azure Database for MySQL — serwer elastyczny

W tym przewodniku Szybki start nawiąż połączenie z serwerem elastycznym usługi Azure Database for MySQL przy użyciu Node.js. Następnie użyjesz instrukcji SQL do wykonywania zapytań, wstawiania, aktualizowania i usuwania danych w bazie danych z platform Mac, Linux i Windows.

W tym artykule założono, że wiesz już, jak programować przy użyciu Node.js, ale dopiero zaczynasz pracę z elastycznym serwerem usługi Azure Database for MySQL.

Wymagania wstępne

Ten przewodnik Szybki start jako punktu wyjścia używa zasobów utworzonych w jednym z tych przewodników:

Ważne

Upewnij się, że adres IP, z którego nawiązujesz połączenie, został dodany reguł zapory serwera przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure

Instalowanie środowiska Node.js i łącznika programu MySQL

W zależności od platformy postępuj zgodnie z instrukcjami w odpowiedniej sekcji, aby zainstalować Node.js. Użyj narzędzia npm, aby zainstalować pakiet mysql2 i jego zależności w folderze projektu.

  1. Odwiedź stronę pobierania programu Node.js i wybierz odpowiednią opcję Instalatora Windows.

  2. Utwórz lokalny folder projektu, taki jak nodejsmysql.

  3. Otwórz wiersz polecenia, a następnie zmień katalog na folder projektu, na przykład cd c:\nodejsmysql\

  4. Uruchom narzędzie NPM, aby zainstalować bibliotekę mysql2 w folderze projektu.

    cd c:\nodejsmysql\
    "C:\Program Files\nodejs\npm" install mysql2
    "C:\Program Files\nodejs\npm" list
    
  5. Sprawdź instalację, sprawdzając tekst danych wyjściowych polecenia npm list. Numer wersji może się różnić po wydaniu nowych poprawek.

Pobieranie informacji o połączeniu

Uzyskaj informacje o połączeniu potrzebne do nawiązania połączenia z wystąpieniem serwera elastycznego usługi Azure Database for MySQL. Potrzebna jest w pełni kwalifikowana nazwa serwera i poświadczenia logowania.

  1. Zaloguj się w witrynie Azure Portal.
  2. W menu po lewej stronie w witrynie Azure Portal wybierz pozycję Wszystkie zasoby, a następnie wyszukaj utworzony serwer (na przykład mydemoserver).
  3. Wybierz nazwę serwera.
  4. Po przejściu do panelu Przegląd serwera zanotuj nazwę serwera i nazwę logowania administratora serwera. Jeśli zapomnisz hasła, możesz również je zresetować z poziomu tego panelu.

Uruchamianie przykładów kodu

  1. Wklej kod JavaScript do nowych plików tekstowych, a następnie zapisz go w folderze projektu z rozszerzeniem pliku .js (np. C:\nodejsmysql\createtable.js lub /home/username/nodejsmysql/createtable.js).
  2. Zastąp hostopcje , userpassword i database konfiguracji w kodzie wartościami określonymi podczas tworzenia elastycznego serwera i bazy danych MySQL.
  3. Uzyskiwanie certyfikatu SSL: aby używać szyfrowanych połączeń z aplikacjami klienckimi, należy pobrać publiczny certyfikat SSL, który jest również dostępny w bloku Sieci w witrynie Azure Portal, jak pokazano na poniższym zrzucie ekranu. Zrzut ekranu przedstawiający sposób pobierania publicznego certyfikatu SSL z witryny Azure Portal.

Zapisz plik certyfikatu w preferowanej lokalizacji.

  1. ssl W opcji konfiguracji zastąp ca-cert nazwę pliku ścieżką do tego pliku lokalnego. Umożliwi to aplikacji bezpieczne łączenie się z bazą danych za pośrednictwem protokołu SSL.
  2. Otwórz wiersz polecenia lub powłokę bash, a następnie zmień katalog na folder cd nodejsmysqlprojektu .
  3. Aby uruchomić aplikację, wprowadź polecenie node, a następnie nazwę pliku, na przykład node createtable.js.
  4. W systemie Windows, jeśli aplikacja węzła nie znajduje się w ścieżce zmiennej środowiskowej, może być konieczne użycie pełnej ścieżki do uruchomienia aplikacji węzła, takiej jak "C:\Program Files\nodejs\node.exe" createtable.js

Nawiązywanie połączenia, tworzenie tabeli i wstawianie danych

Użyj poniższego kodu, aby nawiązać połączenie i załadować dane przy użyciu instrukcji CREATE TABLE i INSERT INTO języka SQL.

Metoda mysql.createConnection() służy do interfejsu z elastycznym wystąpieniem serwera usługi Azure Database for MySQL. Funkcja connect() służy do nawiązywania połączenia z serwerem. Funkcja query() służy do wykonywania zapytania SQL względem bazy danych 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.')
    });
};

Odczyt danych

Użyj poniższego kodu, aby nawiązać połączenie i odczytać dane za pomocą instrukcji SELECT języka SQL.

Metoda mysql.createConnection() służy do interfejsu z elastycznym wystąpieniem serwera usługi Azure Database for MySQL. Metoda connect() służy do nawiązywania połączenia z serwerem. Metoda query() służy do wykonywania zapytania SQL względem bazy danych MySQL. Tablica wyników jest używana do przechowywania wyników zapytania.

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

Aktualizowanie danych

Użyj poniższego kodu, aby nawiązać połączenie i zaktualizować dane za pomocą instrukcji UPDATE języka SQL.

Metoda mysql.createConnection() służy do interfejsu z elastycznym wystąpieniem serwera usługi Azure Database for MySQL. Metoda connect() służy do nawiązywania połączenia z serwerem. Metoda query() służy do wykonywania zapytania SQL względem bazy danych 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.')
        });
};

Usuwanie danych

Użyj następującego kodu, aby nawiązać połączenie i usunąć dane przy użyciu instrukcji DELETE języka SQL.

Metoda mysql.createConnection() służy do interfejsu z elastycznym wystąpieniem serwera usługi Azure Database for MySQL. Metoda connect() służy do nawiązywania połączenia z serwerem. Metoda query() służy do wykonywania zapytania SQL względem bazy danych 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.')
        });
};

Czyszczenie zasobów

Aby wyczyścić wszystkie zasoby używane w tym przewodniku Szybki start, usuń grupę zasobów przy użyciu następującego polecenia:

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

Następne kroki