Mulai cepat: Menggunakan Node.js untuk menyambungkan dan membuat kueri dari data di Azure Database for MySQL

Perhatian

Artikel ini mereferensikan CentOS, distribusi Linux yang mendekati status End Of Life (EOL). Harap pertimbangkan penggunaan dan perencanaan Anda yang sesuai. Untuk informasi selengkapnya, lihat panduan Akhir Masa Pakai CentOS.

BERLAKU UNTUKAzure Database for MySQL - Server Tunggal

Penting

Server tunggal Azure Database for MySQL berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke server fleksibel Azure Database for MySQL. Untuk informasi selengkapnya tentang migrasi ke server fleksibel Azure Database for MySQL, lihat Apa yang terjadi pada Server Tunggal Azure Database for MySQL?

Dalam mulai cepat ini, Anda menyambungkan ke 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 Azure Database for MySQL.

Prasyarat

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 terhubung ke Azure Database for MySQL. Anda memerlukan nama server dan kredensial untuk masuk yang sepenuhnya memenuhi syarat.

  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. Nama server Azure Database for MySQL

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.

  3. Dapatkan sertifikat SSL: Unduh sertifikat yang diperlukan untuk berkomunikasi melalui SSL dengan Database Azure untuk server MySQL Anda dari https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem dan simpan file sertifikat ke drive lokal Anda.

    Untuk Microsoft Internet Explorer dan Microsoft Edge: Setelah pengunduhan selesai, ganti nama sertifikat menjadi DigiCertGlobalRootCA.crt.pem.

    Lihat tautan berikut untuk sertifikat untuk server di sovereign cloud: Azure Government, Microsoft Azure yang dioperasikan oleh 21Vianet, dan Azure Jerman.

  4. Pada opsi konfigurasi ssl, ganti nama file ca-cert dengan jalur ke file lokal ini.

  5. Buka perintah atau shell bash, lalu ubah direktori ke dalam folder proyek cd nodejsmysql Anda.

  6. Untuk menjalankan aplikasi, masukkan perintah node diikuti dengan nama file, seperti node createtable.js.

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

Membaca data

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

Metode mysql.createConnection() digunakan untuk berinteraksi dengan server 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: '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.')
    });
};

Memperbarui data

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

Metode mysql.createConnection() digunakan untuk berinteraksi dengan server 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: '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.')
        });
};

Menghapus data

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

Metode mysql.createConnection() digunakan untuk berinteraksi dengan server 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: '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.')
        });
};

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