Bagikan melalui


Panduan Mulai Cepat: Gunakan Node.js untuk menghubungkan dan meminta data di Azure Database for MySQL - Server Fleksibel

BERLAKU UNTUK: Azure Database for MySQL - Server Fleksibel

Dalam mulai cepat ini, Anda menyambungkan ke server fleksibel Azure Database for MySQL dengan menggunakan Node.js. Anda kemudian menggunakan pernyataan SQL untuk mengkueri, menyisipkan, memperbarui, dan menghapus data dalam database dari platform Mac, Linux, dan Windows.

Artikel ini mengasumsikan bahwa Anda terbiasa mengembangkan menggunakan Node.js, tetapi Anda baru bekerja dengan server fleksibel Azure Database for MySQL.

Prasyarat

Mulai cepat ini menggunakan sumber daya yang dibuat di salah satu panduan ini sebagai titik awal:

Penting

Pastikan aturan firewall server telah ditambahkan ke alamat IP tempat Anda dihubungkan menggunakan portal Microsoft Azure atau Azure CLI

Memasang Node.js dan konektor MySQL

Tergantung pada platform Anda, ikuti petunjuk di bagian yang sesuai untuk memasang Node.js. Gunakan npm untuk menginstal paket mysql2 dan dependensinya ke folder proyek Anda.

  1. Kunjungi halaman unduhan Node.js, lalu pilih opsi alat penginstal Windows yang Anda inginkan.

  2. Membuat folder proyek lokal seperti nodejsmysql.

  3. Buka perintah, lalu ubah direktori ke dalam folder proyek, seperti cd c:\nodejsmysql\

  4. Jalankan alat NPM untuk menginstal pustaka mysql2 ke folder proyek.

    cd c:\nodejsmysql\
    "C:\Program Files\nodejs\npm" install mysql2
    "C:\Program Files\nodejs\npm" list
    
  5. Verifikasi penginstalan dengan memeriksa teks output npm list. Nomor versi dapat bervariasi karena patch baru dirilis.

Mendapatkan informasi koneksi

Dapatkan informasi koneksi yang diperlukan untuk menyambungkan ke instans server fleksibel Azure Database for MySQL. Anda memerlukan nama server yang sepenuhnya memenuhi syarat dan info masuk.

  1. Masuk ke portal Azure.
  2. Dari menu sebelah kiri di portal Microsoft Azure, pilih Semua sumber daya, lalu cari server yang telah Anda buat (seperti mydemoserver).
  3. Pilih nama server.
  4. Dari panel server Gambaran Umum, buat catatan Nama server dan Nama untuk masuk admin server. Jika lupa kata sandi, Anda juga dapat mengatur ulang kata sandi dari panel ini.

Menjalankan sampel kode

  1. Tempel kode JavaScript ke dalam file teks baru, lalu simpan ke dalam folder proyek dengan ekstensi file .js (seperti C:\nodejsmysql\createtable.js atau /home/username/nodejsmysql/createtable.js).
  2. Ganti opsi konfigurasi host, user, password, dan database dalam kode dengan nilai yang Anda tentukan saat membuat server dan database fleksibel MySQL.
  3. Dapatkan sertifikat SSL: Untuk menggunakan koneksi terenkripsi dengan aplikasi klien, Anda harus mengunduh sertifikat SSL publik yang juga tersedia di bilah Jaringan portal Azure seperti yang ditunjukkan pada cuplikan layar di bawah ini. Cuplikan layar yang menunjukkan cara mengunduh sertifikat SSL publik dari portal Microsoft Azure.

Simpan file sertifikat ke lokasi pilihan Anda.

  1. Pada opsi konfigurasi ssl, ganti nama file ca-cert dengan jalur ke file lokal ini. Konfigurasi ini akan memungkinkan aplikasi terhubung dengan aman ke database melalui SSL.
  2. Buka perintah atau shell bash, lalu ubah direktori ke dalam folder proyek cd nodejsmysql Anda.
  3. Untuk menjalankan aplikasi, masukkan perintah node diikuti dengan nama file, seperti node createtable.js.
  4. Di Windows, jika aplikasi node tidak berada di jalur variabel lingkungan Anda, Anda mungkin perlu menggunakan jalur lengkap untuk meluncurkan aplikasi node, seperti "C:\Program Files\nodejs\node.exe" createtable.js

Menyambungkan, membuat tabel, dan menyisipkan data

Gunakan kode berikut untuk menghubungkan dan memuat data dengan menggunakan pernyataan SQL CREATE TABLE dan INSERT INTO.

Metode mysql.createConnection() digunakan untuk berinteraksi dengan instans server fleksibel Azure Database for MySQL. Fungsi connect() digunakan untuk membuat koneksi ke server. Fungsi query() digunakan untuk menjalankan kueri SQL terhadap 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.')
    });
};

Membaca data

Gunakan kode berikut untuk menyambungkan dan membaca data menggunakan pernyataan SQL SELECT.

Metode mysql.createConnection() digunakan untuk berinteraksi dengan instans server fleksibel Azure Database for MySQL. Metode connect() digunakan untuk membuat koneksi ke server. Metode query() digunakan untuk menjalankan kueri SQL terhadap database MySQL. Array hasil digunakan untuk menyimpan hasil kueri.

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

Memperbarui data

Gunakan kode berikut untuk menyambungkan dan memperbarui data menggunakan pernyataan SQL UPDATE.

Metode mysql.createConnection() digunakan untuk berinteraksi dengan instans server fleksibel Azure Database for MySQL. Metode connect() digunakan untuk membuat koneksi ke server. Metode query() digunakan untuk menjalankan kueri SQL terhadap 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.')
        });
};

Menghapus data

Gunakan kode berikut untuk menyambungkan dan menghapus data dengan menggunakan pernyataan SQL DELETE.

Metode mysql.createConnection() digunakan untuk berinteraksi dengan instans server fleksibel Azure Database for MySQL. Metode connect() digunakan untuk membuat koneksi ke server. Metode query() digunakan untuk menjalankan kueri SQL terhadap 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.')
        });
};

Membersihkan sumber daya

Untuk membersihkan semua sumber daya yang digunakan selama mulai cepat ini, hapus grup sumber daya menggunakan perintah berikut:

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

Langkah berikutnya