Avvio rapido: Usare .NET (C#) per connettersi ed eseguire query sui dati nel server flessibile di Database di Azure per PostgreSQL

Questa guida introduttiva illustra come connettersi a un server flessibile Database di Azure per PostgreSQL usando un'applicazione C#. Spiega come usare le istruzioni SQL per eseguire query, inserire, aggiornare ed eliminare dati nel database. I passaggi descritti in questo articolo presuppongono che si abbia familiarità con lo sviluppo con C# e che non si abbia familiarità con Database di Azure per PostgreSQL.

Prerequisiti

Per questa guida di avvio rapido, è necessario:

Ottenere informazioni di connessione

Ottenere le informazioni di connessione necessarie per connettersi al server flessibile Database di Azure per PostgreSQL. Sono necessari il nome completo del server e le credenziali di autenticazione.

Usare il portale di Azure:

  1. Nel menu a sinistra in Azure portale selezionare Tutte le risorse e quindi cercare il server creato.

  2. Selezionare il nome del server.

  3. Nel menu della risorsa selezionare Panoramica.

    Screenshot che mostra la pagina di panoramica.

  4. Copiare i valori visualizzati come Account di accesso endpoint e Amministratore.

    Screenshot che mostra i valori dell'account di accesso endpoint e amministratore nella pagina Panoramica.

  5. Se si dimentica la password per l'autenticazione dell'amministratore, reimpostarla usando il pulsante Reimposta password .

    Screenshot che mostra il pulsante Reimposta password nella pagina Panoramica.

Passaggio 1: Connettersi e inserire i dati

Usare il codice seguente per connettersi e caricare i dati usando le istruzioni SQL CREATE TABLE e INSERT INTO. Il codice usa la classe NpgsqlCommand con questi metodi:

  • Open() per stabilire una connessione al database del server flessibile di Database di Azure per PostgreSQL.
  • CreateCommand() per impostare la proprietà CommandText.
  • ExecuteNonQuery() per eseguire i comandi di database.

Importante

Sostituire i parametri Host, DBName, User e Password con i valori specificati al momento della creazione del server e del database.

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();
        }
    }
}

Problemi? Segnalaceli.

Passaggio 2: Leggere i dati

Usare il codice seguente per connettersi e leggere i dati usando un'istruzione SQL SELECT. Il codice usa la classe NpgsqlCommand con questi metodi:

Importante

Sostituire i parametri Host, DBName, User e Password con i valori specificati al momento della creazione del server e del database.

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();
        }
    }
}

Problemi? Segnalaceli.

Passaggio 3: Aggiornare i dati

Usare il codice seguente per connettersi al database e aggiornare i dati usando un'istruzione UPDATE SQL. Il codice usa la NpgsqlCommand classe con i metodi seguenti:

  • Open() per stabilire una connessione al server flessibile Database di Azure per PostgreSQL.
  • CreateCommand() per impostare la CommandText proprietà.
  • ExecuteNonQuery() per eseguire i comandi di database.

Importante

Sostituire i parametri Host, DBName, User e Password con i valori specificati al momento della creazione del server e del database.

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();
        }
    }
}


Problemi? Segnalaceli.

Passaggio 4: Eliminare i dati

Usare il codice seguente per connettersi al database ed eliminare i dati usando un'istruzione SQL DELETE .

Il codice usa la NpgsqlCommand classe con il metodo Open() per stabilire una connessione al database del server flessibile Database di Azure per PostgreSQL. Il codice usa quindi il metodo CreateCommand(), imposta la CommandText proprietà e chiama il metodo ExecuteNonQuery() per eseguire i comandi di database.

Importante

Sostituire i parametri Host, DBName, User e Password con i valori specificati al momento della creazione del server e del database.

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();
        }
    }
}

Pulire le risorse

Per pulire tutte le risorse usate durante questa guida introduttiva, eliminare il gruppo di risorse usando il comando seguente:

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