Hızlı Başlangıç: MySQL için Azure Veritabanı'da verileri bağlamak ve sorgulamak için Node.js kullanma

Dikkat

Bu makalede, Kullanım Süresi Sonu (EOL) durumuna yakın bir Linux dağıtımı olan CentOS'a başvuruda bulunur. Lütfen kullanımınızı ve buna uygun planlamayı göz önünde bulundurun. Daha fazla bilgi için bkz . CentOS Kullanım Süresi Sonu kılavuzu.

ŞUNLAR IÇIN GEÇERLIDIR: MySQL için Azure Veritabanı - Tek Sunucu

Önemli

MySQL için Azure Veritabanı tek sunucu kullanımdan kaldırma yolundadır. Esnek MySQL için Azure Veritabanı sunucuya yükseltmenizi kesinlikle öneririz. MySQL için Azure Veritabanı esnek sunucuya geçiş hakkında daha fazla bilgi için bkz. MySQL için Azure Veritabanı Tek Sunucu'ya neler oluyor?

Bu hızlı başlangıçta, Node.js kullanarak bir MySQL için Azure Veritabanı bağlanacaksınız. Ardından SQL deyimlerini kullanarak Mac, Linux ve Windows platformlarındaki veritabanındaki verileri sorgular, ekler, güncelleştirir ve silersiniz.

Bu makalede, Node.js kullanarak geliştirme konusunda bilgi sahibi olduğunuz, ancak MySQL için Azure Veritabanı ile çalışmaya yeni olduğunuz varsayılır.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
  • bir MySQL için Azure Veritabanı sunucusu. Azure portalını kullanarak bir MySQL için Azure Veritabanı sunucusu oluşturun veya Azure CLI kullanarak MySQL için Azure Veritabanı sunucusu oluşturun.

Önemli

Bağlandığınız IP adresinin Azure portalı veya Azure CLI kullanılarak sunucunun güvenlik duvarı kurallarına eklendiğinden emin olun

Node.js’yi ve MySQL bağlayıcısını yükleme

Platformunuza bağlı olarak, Node.js yüklemek için uygun bölümdeki yönergeleri izleyin. proje klasörünüzde mysql2 paketini ve bağımlılıklarını yüklemek için npm kullanın.

  1. Node.js indirme sayfasını ziyaret edin ve istediğiniz Windows yükleyici seçeneğini belirleyin.

  2. nodejsmysql gibi yerel bir proje klasörü oluşturun.

  3. Komut istemini açın ve ardından dizini proje klasörüne değiştirin, örneğin cd c:\nodejsmysql\

  4. Proje klasörüne mysql2 kitaplığını yüklemek için NPM aracını çalıştırın.

    cd c:\nodejsmysql\
    "C:\Program Files\nodejs\npm" install mysql2
    "C:\Program Files\nodejs\npm" list
    
  5. Çıkış metnini denetleyerek npm list yüklemeyi doğrulayın. Yeni yamalar yayımlandıkça sürüm numarası değişebilir.

Bağlantı bilgilerini alma

MySQL için Azure Veritabanı'na bağlanmak üzere gereken bağlantı bilgilerini alın. Tam sunucu adına ve oturum açma kimlik bilgilerine ihtiyacınız vardır.

  1. Azure Portal’da oturum açın.
  2. Azure portalında sol taraftaki menüden Tüm kaynaklar'ı seçin ve oluşturduğunuz sunucuyu (mydemoserver gibi) arayın.
  3. Sunucu adını seçin.
  4. Sunucunun Genel Bakış panelinden Sunucu adı ile Sunucu yöneticisi oturum açma adı’nı not alın. Parolanızı unutursanız, bu panelden parolayı da sıfırlayabilirsiniz. MySQL için Azure Veritabanı sunucu adı

Kod örneklerini çalıştırma

  1. JavaScript kodunu yeni metin dosyalarına yapıştırın ve dosya uzantısı .js (C:\nodejsmysql\createtable.js veya /home/username/nodejsmysql/createtable.js gibi) olan bir proje klasörüne kaydedin.

  2. Koddaki , userve yapılandırma seçeneklerini, sunucuyu ve database veritabanını oluştururken belirttiğiniz değerlerle değiştirinhostpassword.

  3. SSL sertifikası alma: MySQL için Azure Veritabanı sunucunuzla https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem SSL üzerinden iletişim kurmak için gereken sertifikayı indirin ve sertifika dosyasını yerel sürücünüze kaydedin.

    Microsoft Internet Explorer ve Microsoft Edge için: İndirme tamamlandıktan sonra sertifikayı DigiCertGlobalRootCA.crt.pem olarak yeniden adlandırın.

    Bağımsız bulutlardaki sunucular için sertifikalar için aşağıdaki bağlantılara bakın: Azure Kamu, 21Vianet tarafından sağlanan Microsoft Azure ve Azure Almanya.

  4. Yapılandırma seçeneğinde ssl dosya adını bu yerel dosyanın yoluyla değiştirin ca-cert .

  5. Komut istemini veya bash kabuğunu açın ve dizini proje klasörünüz cd nodejsmysqlolarak değiştirin.

  6. Uygulamayı çalıştırmak için düğüm komutunu ve ardından gibi node createtable.jsdosya adını girin.

  7. Windows'da, düğüm uygulaması ortam değişken yolunuz içinde değilse, düğüm uygulamasını başlatmak için tam yolu kullanmanız gerekebilir; örneğin, "C:\Program Files\nodejs\node.exe" createtable.js

Bağlanma, tablo oluşturma ve veri ekleme

Bağlanıp CREATE TABLE ve INSERT INTO SQL deyimlerini kullanarak verileri yüklemek için aşağıdaki kodu kullanın.

MySQL sunucusuyla arabirim oluşturmak için mysql.createConnection() yöntemi, kullanılır. Sunucuyla bağlantı kurmak için connect() işlevi kullanılır. MySQL veritabanına karşı SQL sorgusunu yürütmek için query() işlevi kullanılır.

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

Verileri okuma

Bağlanmak ve SELECT SQL deyimi kullanarak verileri okumak için aşağıdaki kodu kullanın.

MySQL sunucusuyla arabirim oluşturmak için mysql.createConnection() yöntemi, kullanılır. Sunucuyla bağlantı kurmak için connect() yöntemi kullanılır. MySQL veritabanına karşı SQL sorgusunu yürütmek için query() yöntemi kullanılır. Sorgunun sonuçlarını tutmak için sonuç dizisi kullanılır.

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

Verileri güncelleştirme

Update SQL deyimini kullanarak verileri bağlamak ve güncelleştirmek için aşağıdaki kodu kullanın.

MySQL sunucusuyla arabirim oluşturmak için mysql.createConnection() yöntemi, kullanılır. Sunucuyla bağlantı kurmak için connect() yöntemi kullanılır. MySQL veritabanına karşı SQL sorgusunu yürütmek için query() yöntemi kullanılır.

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

Veri silme

DELETE SQL deyimini kullanarak bağlanmak ve verileri silmek için aşağıdaki kodu kullanın.

MySQL sunucusuyla arabirim oluşturmak için mysql.createConnection() yöntemi, kullanılır. Sunucuyla bağlantı kurmak için connect() yöntemi kullanılır. MySQL veritabanına karşı SQL sorgusunu yürütmek için query() yöntemi kullanılır.

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

Kaynakları temizleme

Bu hızlı başlangıç sırasında kullanılan tüm kaynakları temizlemek için aşağıdaki komutu kullanarak kaynak grubunu silin:

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

Sonraki adımlar