快速入門:使用 .NET (C#) 連線和查詢 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中的數據
適用於:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器
本快速入門示範如何使用 C# 應用程式連線到 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例。 它示範如何使用 SQL 語句來查詢、插入、更新和刪除資料庫中的數據。 本文中的步驟假設您已熟悉使用 C# 進行開發,而且不熟悉 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器。
必要條件
在本快速入門中,您需要:
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
- 使用 Azure 入口網站 建立 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例
如果您沒有 Azure CLI,則為 。 - 使用伺服器上可用的空白 postgres 資料庫,或建立 新的資料庫。
- 為您的平台安裝 .NET SDK(Windows、Ubuntu Linux 或 macOS)。
- 安裝 Visual Studio 以建置您的專案。
- 在 Visual Studio 中安裝 Npgsql NuGet 套件。
取得連線資訊
取得連線到 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例所需的連線資訊。 您需要完整的伺服器名稱和登入認證。
- 登入 Azure 入口網站。
- 從 Azure 入口網站 的左側功能表中,單擊 [所有資源],然後搜尋您所建立的伺服器(例如 mydemoserver)。
- 按兩下伺服器名稱。
- 從伺服器的 [概觀] 面板中,記下 [伺服器名稱] 和 [伺服器管理員登入名稱]。 如果您忘記密碼,您也可以從此面板重設密碼。
步驟 1:連線 並插入數據
使用下列程序代碼,使用 CREATE TABLE 和 INSERT INTO SQL 語句連接和載入數據。 程式代碼會搭配 方法使用 NpgsqlCommand 類別:
- Open() 建立與 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器資料庫的連線。
- CreateCommand() 會設定 CommandText 屬性。
- ExecuteNonQuery() 方法來執行資料庫命令。
重要
將 Host、DBName、User 和 Password 參數取代為您建立伺服器和資料庫時所指定的值。
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:讀取數據
使用下列程序代碼,使用 SELECT SQL 語句連接和讀取數據。 程式代碼會搭配 方法使用 NpgsqlCommand 類別:
- Open() 建立 PostgreSQL 的連線。
- CreateCommand() 和 ExecuteReader() 以執行資料庫命令。
- Read() 會前進到結果中的記錄。
- GetInt32() 和 GetString() 來剖析記錄中的值。
重要
將 Host、DBName、User 和 Password 參數取代為您建立伺服器和資料庫時所指定的值。
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();
}
}
}
步驟 3:更新數據
使用下列程序代碼,使用 UPDATE SQL語句連接及更新資料。 程式代碼會搭配 方法使用 NpgsqlCommand 類別:
- Open() 建立與 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的連線。
- CreateCommand(),設定 CommandText 屬性。
- ExecuteNonQuery() 方法來執行資料庫命令。
重要
將 Host、DBName、User 和 Password 參數取代為您建立伺服器和資料庫時所指定的值。
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();
}
}
}
步驟 4:刪除數據
使用下列程式代碼,使用 DELETE SQL 語句連接和刪除資料。
程序代碼會使用 NpgsqlCommand 類別搭配 Open() 方法來建立與 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器資料庫的連線。 然後,程式代碼會使用 CreateCommand() 方法來設定 CommandText 屬性,並呼叫 ExecuteNonQuery() 方法來執行資料庫命令。
重要
將 Host、DBName、User 和 Password 參數取代為您建立伺服器和資料庫時所指定的值。
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