البداية السريعة: استخدم .Node.js للاتصال والاستعلام عن البيانات في Azure Database for MySQL

تنبيه

تشير هذه المقالة إلى CentOS، وهو توزيع Linux هو حالة نهاية العمر الافتراضي (EOL). يرجى مراعاة استخدامك والتخطيط وفقا لذلك. لمزيد من المعلومات، راجع إرشادات نهاية العمر الافتراضي CentOS.

ينطبق على: قاعدة بيانات Azure ل MySQL - خادم واحد

هام

قاعدة بيانات Azure لخادم MySQL الفردي على مسار الإيقاف. نوصي بشدة بالترقية إلى قاعدة بيانات Azure لخادم MySQL المرن. لمزيد من المعلومات حول الترحيل إلى خادم Azure Database for MySQL المرن، راجع ما الذي يحدث لقاعدة بيانات Azure لخادم MySQL الفردي؟

يمكنك في Quickstart الاتصال بقاعدة بيانات Azure Database for MySQL باستخدام لغة Node.js ثم يمكنك استخدام عبارات SQL للاستعلام عن البيانات وإدراجها وتحديثها وحذفها في قاعدة البيانات من أنظمة Mac وLinux وWindows الأساسية.

تفترض هذه المقالة أنك على دراية بالتطوير باستخدام Node.js، ولكنك جديد في العمل مع Azure Database for MySQL.

المتطلبات الأساسية

هام

تأكد من أن عنوان IP الذي تتصل منه قد تمت إضافته لقواعد جدار الحماية للخادم باستخدام مدخل Microsoft Azure أو Azure CLI

تثبيت Node.js وموصل MySQL

اعتمادا على النظام الأساسي الخاص بك، اتبع الإرشادات الموجودة في القسم المناسب لتثبيت Node.js. استخدم npm لتثبيت حزمة mysql2 وتبعياتها في مجلد المشروع الخاص بك.

  1. تفضل بزيارة صفحة تنزيلات Node.js، ثم حدد خيار مثبت Windows الذي تريده.

  2. قم بإنشاء مجلد مشروع محلي مثل nodejsmysql.

  3. افتح موجه الأوامر، ثم قم بتغيير الدليل إلى مجلد المشروع، مثل cd c:\nodejsmysql\

  4. قم بتشغيل أداة NPM لتثبيت مكتبة mysql2 في مجلد المشروع.

    cd c:\nodejsmysql\
    "C:\Program Files\nodejs\npm" install mysql2
    "C:\Program Files\nodejs\npm" list
    
  5. تحقق من التثبيت عن طريق التحقق من نص الإخراج npm list . قد يختلف رقم الإصدار عند إصدار تصحيحات جديدة.

الحصول على معلومات الاتصال

احصل على معلومات الاتصال المطلوبة للاتصال بـAzure Database for MySQL. أنت بحاجة إلى اسم الخادم المؤهل بالكامل وبيانات اعتماد تسجيل الدخول.

  1. سجّل الدخول إلى مدخل Azure.
  2. من القائمة اليسرى في مدخل Azure، انقر فوق كافة الموارد،ثم ابحث عن الخادم الذي أنشأته (مثل mydemoserver).
  3. حدد اسم الخادم.
  4. من لوحة نظرة عامة على الخادم، دوّن ملاحظة عن اسم الخادم واسم تسجيل دخول مسؤول الخادم. إذا نسيت كلمة المرور، يمكنك أيضًا إعادة تعيين كلمة المرور من هذه اللوحة.

تشغيل نماذج التعليمات البرمجية

  1. الصق تعليمة JavaScript البرمجية في ملفات نصية جديدة، ثم احفظها في مجلد مشروع بملحق الملف .js (مثل C:\nodejsmysql\createtable.js أو /home/username/nodejsmysql/createtable.js).

  2. استبدل خيارات التكوين host وuser و password وdatabase في التعليمة البرمجية بالقيم التي حددتها عند إنشاء الخادم وقاعدة البيانات.

  3. الحصول على شهادة SSL: قم بتنزيل الشهادة اللازمة للاتصال عبر SSL مع قاعدة بيانات Azure لخادم MySQL من https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem واحفظ ملف الشهادة إلى محرك الأقراص المحلي لديك.

    بالنسبة إلى Microsoft Internet Explorer وMicrosoft Edge: بعد اكتمال التنزيل، أعد تسمية الشهادة إلى DigiCertGlobalRootCA.crt.pem.

    راجع الارتباطات التالية للشهادات للخوادم في السحب السيادية: Azure Government وMicrosoft Azure التي تديرها 21Vianet وAzure Germany.

  4. في خيار التكوين ssl، استبدل اسم الملف ca-cert بالمسار إلى هذا الملف المحلي.

  5. افتح موجه الأوامر أو bash shell، ثم قم بتغيير الدليل إلى مجلد cd nodejsmysqlالمشروع الخاص بك .

  6. لتشغيل التطبيق، أدخل أمر العقدة متبوعا باسم الملف، مثل node createtable.js.

  7. في Windows، إذا لم يكن تطبيق العقدة في مسار متغير البيئة الخاص بك، فقد تحتاج إلى استخدام المسار الكامل لتشغيل تطبيق العقدة، مثل "C:\Program Files\nodejs\node.exe" createtable.js

الاتصال وإنشاء الجدول وإدخال البيانات

استخدم التعليمات البرمجية التالية للاتصال وتحميل البيانات باستخدام عبارات CREATE TABLE وINSERT INTO SQL.

يتم استخدام أسلوب mysql.createConnection() للواجهة مع خادم MySQL. يتم استخدام الدالة connect() لتأسيس الاتصال بالخادم. يتم استخدام الدالة query() لتنفيذ استعلام SQL مقابل قاعدة بيانات 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.')
    });
};

اقرأ البيانات

استخدم التعليمات البرمجية التالية للاتصال وقراءة البيانات باستخدام عبارة الـ SQL: SELECT.

يتم استخدام أسلوب mysql.createConnection() للواجهة مع خادم MySQL. يتم استخدام أسلوب connect() لإنشاء الاتصال بالخادم. يتم استخدام أسلوب query() لتنفيذ استعلام SQL مقابل قاعدة بيانات 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.");
            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.')
    });
};

تحديث البيانات

استخدم التعليمات البرمجية التالية للاتصال وتحديث البيانات باستخدام عبارة UPDATE SQL.

يتم استخدام أسلوب mysql.createConnection() للواجهة مع خادم MySQL. يتم استخدام أسلوب connect() لإنشاء الاتصال بالخادم. يتم استخدام أسلوب query() لتنفيذ استعلام SQL مقابل قاعدة بيانات 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.')
        });
};

حذف البيانات

استخدم التعليمات البرمجية التالية للاتصال وحذف البيانات باستخدام عبارة DELETE SQL.

يتم استخدام أسلوب mysql.createConnection() للواجهة مع خادم MySQL. يتم استخدام أسلوب connect() لإنشاء الاتصال بالخادم. يتم استخدام أسلوب query() لتنفيذ استعلام SQL مقابل قاعدة بيانات 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.')
        });
};

تنظيف الموارد

لتنظيف جميع الموارد المستخدمة في أثناء هذا التشغيل السريع حذف مجموعة الموارد باستخدام الأمر التالي:

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

الخطوات التالية