التشغيل السريع: استخدم .NET (C#) للاتصال والاستعلام عن البيانات في قاعدة بيانات Azure لـ PostgreSQL-الخادم المرن

يطبق على: قاعدة بيانات Azure لـ PostgreSQL - الخادم المرن

يوضح هذا التشغيل السريع كيفية الاتصال بمثيل خادم مرن لقاعدة بيانات Azure ل PostgreSQL باستخدام تطبيق C#. توضح طريقة استخدام عبارات SQL الاستعلام عن البيانات وإدراجها وتحديثها وحذفها في قاعدة البيانات. تفترض الخطوات الواردة في هذه المقالة أنك على دراية بالتطوير باستخدام C#، وأنك جديد في العمل مع قاعدة بيانات Azure لخادم PostgreSQL المرن.

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

ستتعرف في هذا البدء السريع على:

  • حساب Azure مع اشتراك نشط. أنشئ حساباً مجاناً.
  • إنشاء مثيل خادم مرن لقاعدة بيانات Azure ل PostgreSQL باستخدام مدخل Microsoft Azure
    أو Azure CLI إذا لم يكن لديك حساباً.
  • استخدم قاعدة بيانات postgres فارغة متوفرة على الخادم أو إنشاء قاعدة بيانات جديدة.
  • قم بتثبيت .NET SDK للنظام الأساسي الخاص بك(Windows أو Ubunt Linuxأو macOS) للنظام الأساسي الخاص بك.
  • تثبيت Visual Studio لإنشاء المشروع الخاص بك.
  • تثبيت حزمة NpgsqlNpgsql في Visual Studio.

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

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

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

الخطوة 1: الاتصال بالبيانات وإدراجها

قم باستخدام التعليمات البرمجية التالية للاتصال وتحميل البيانات باستخدام إنشاء جدول وإدراج في عبارات SQL. تستخدم التعليمات البرمجية فئة NpgsqlCommand مع الأسلوب:

هام

استبدال معلمات المضيف وDBName والمستخدم وكلمة المرور بالقيم التي قمت بتحديدها عند إنشاء الخادم وقاعدة البيانات.

using System;
using Npgsql;

namespace Driver
{
    public class AzurePostgresCreate
    {
        // Obtain connection string information from the portal
        //
        private static string Host = "mydemoserver.postgres.database.azure.com";
        private static string User = "mylogin";
        private static string  DBname = "postgres";
        private static string Password = "<server_admin_password>";
        private static string Port = "5432";

        static void Main(string[] args)
        {
            // Build connection string using parameters from portal
            //
            string connString =
                String.Format(
                    "Server={0};Username={1};Database={2};Port={3};Password={4};SSLMode=Prefer",
                    Host,
                    User,
                    DBname,
                    Port,
                    Password);


            using (var conn = new NpgsqlConnection(connString))

            {
                Console.Out.WriteLine("Opening connection");
                conn.Open();

                using (var command = new NpgsqlCommand("DROP TABLE IF EXISTS inventory", conn))
                {
                    command.ExecuteNonQuery();
                    Console.Out.WriteLine("Finished dropping table (if existed)");

                }

                using (var command = new NpgsqlCommand("CREATE TABLE inventory(id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER)", conn))
                {
                    command.ExecuteNonQuery();
                    Console.Out.WriteLine("Finished creating table");
                }

                using (var command = new NpgsqlCommand("INSERT INTO inventory (name, quantity) VALUES (@n1, @q1), (@n2, @q2), (@n3, @q3)", conn))
                {
                    command.Parameters.AddWithValue("n1", "banana");
                    command.Parameters.AddWithValue("q1", 150);
                    command.Parameters.AddWithValue("n2", "orange");
                    command.Parameters.AddWithValue("q2", 154);
                    command.Parameters.AddWithValue("n3", "apple");
                    command.Parameters.AddWithValue("q3", 100);

                    int nRows = command.ExecuteNonQuery();
                    Console.Out.WriteLine(String.Format("Number of rows inserted={0}", nRows));
                }
            }

            Console.WriteLine("Press RETURN to exit");
            Console.ReadLine();
        }
    }
}

هل تواجه أي مشاكل؟ أبلغنا بها.

الخطوة 2: قراءة البيانات

استخدم التعليمات البرمجية التالية للاتصال وقراءة البيانات باستخدام حدد عبارة SQL. تستخدم التعليمات البرمجية فئة NpgsqlCommand مع الأسلوب:

هام

استبدال معلمات المضيف وDBName والمستخدم وكلمة المرور بالقيم التي قمت بتحديدها عند إنشاء الخادم وقاعدة البيانات.

using System;
using Npgsql;

namespace Driver
{
    public class AzurePostgresRead
    {
        // Obtain connection string information from the portal
        //
        private static string Host = "mydemoserver.postgres.database.azure.com";
        private static string User = "mylogin";
        private static string  DBname = "postgres";
        private static string Password = "<server_admin_password>";
        private static string Port = "5432";

        static void Main(string[] args)
        {
            // Build connection string using parameters from portal
            //
            string connString =
                String.Format(
                    "Server={0}; User Id={1}; Database={2}; Port={3}; Password={4};SSLMode=Prefer",
                    Host,
                    User,
                    DBname,
                    Port,
                    Password);

            using (var conn = new NpgsqlConnection(connString))
            {

                Console.Out.WriteLine("Opening connection");
                conn.Open();


                using (var command = new NpgsqlCommand("SELECT * FROM inventory", conn))
                {

                    var reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        Console.WriteLine(
                            string.Format(
                                "Reading from table=({0}, {1}, {2})",
                                reader.GetInt32(0).ToString(),
                                reader.GetString(1),
                                reader.GetInt32(2).ToString()
                                )
                            );
                    }
                    reader.Close();
                }
            }

            Console.WriteLine("Press RETURN to exit");
            Console.ReadLine();
        }
    }
}

هل تواجه أي مشاكل؟ أبلغنا بها.

الخطوة الثالثة: تحديث البيانات

استخدم التعليمات البرمجية التالية للاتصال وقراءة البيانات باستخدام تحديث عبارة SQL. تستخدم التعليمات البرمجية فئة NpgsqlCommand مع الأسلوب:

هام

استبدال معلمات المضيف وDBName والمستخدم وكلمة المرور بالقيم التي قمت بتحديدها عند إنشاء الخادم وقاعدة البيانات.

using System;
using Npgsql;

namespace Driver
{
    public class AzurePostgresUpdate
    {
        // Obtain connection string information from the portal
        //
        private static string Host = "mydemoserver.postgres.database.azure.com";
        private static string User = "mylogin";
        private static string  DBname = "postgres";
        private static string Password = "<server_admin_password>";
        private static string Port = "5432";

        static void Main(string[] args)
        {
            // Build connection string using parameters from portal
            //
            string connString =
                String.Format(
                    "Server={0}; User Id={1}; Database={2}; Port={3}; Password={4};SSLMode=Prefer",
                    Host,
                    User,
                    DBname,
                    Port,
                    Password);

            using (var conn = new NpgsqlConnection(connString))
            {

                Console.Out.WriteLine("Opening connection");
                conn.Open();

                using (var command = new NpgsqlCommand("UPDATE inventory SET quantity = @q WHERE name = @n", conn))
                {
                    command.Parameters.AddWithValue("n", "banana");
                    command.Parameters.AddWithValue("q", 200);
                    int nRows = command.ExecuteNonQuery();
                    Console.Out.WriteLine(String.Format("Number of rows updated={0}", nRows));
                }
            }

            Console.WriteLine("Press RETURN to exit");
            Console.ReadLine();
        }
    }
}


هل تواجه أي مشاكل؟ أبلغنا بها.

الخطوة الرابعة: حذف البيانات

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

تستخدم التعليمات البرمجية فئة NpgsqlCommand مع الأسلوب Open() لإنشاء اتصال بقاعدة بيانات Azure لقاعدة بيانات الخادم المرن PostgreSQL. ثم تستخدم التعليمات البرمجية طريقة CreateCommand() وتعيين الخاصية CommandText ثم نقل الطريقة ExecuteNonQuery() لتشغيل أوامر قاعدة البيانات.

هام

استبدال معلمات المضيف وDBName والمستخدم وكلمة المرور بالقيم التي قمت بتحديدها عند إنشاء الخادم وقاعدة البيانات.

using System;
using Npgsql;

namespace Driver
{
    public class AzurePostgresDelete
    {
        // Obtain connection string information from the portal
        //
        private static string Host = "mydemoserver.postgres.database.azure.com";
        private static string User = "mylogin@mydemoserver";
        private static string  DBname = "postgres";
        private static string Password = "<server_admin_password>";
        private static string Port = "5432";

        static void Main(string[] args)
        {
            // Build connection string using parameters from portal
            //
            string connString =
                String.Format(
                    "Server={0}; User Id={1}; Database={2}; Port={3}; Password={4};SSLMode=Prefer",
                    Host,
                    User,
                    DBname,
                    Port,
                    Password);

            using (var conn = new NpgsqlConnection(connString))
            {
                Console.Out.WriteLine("Opening connection");
                conn.Open();

                using (var command = new NpgsqlCommand("DELETE FROM inventory WHERE name = @n", conn))
                {
                    command.Parameters.AddWithValue("n", "orange");

                    int nRows = command.ExecuteNonQuery();
                    Console.Out.WriteLine(String.Format("Number of rows deleted={0}", nRows));
                }
            }

            Console.WriteLine("Press RETURN to exit");
            Console.ReadLine();
        }
    }
}

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

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

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

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