Azure Database for PostgreSQL 单一服务器即将停用。 强烈建议升级到 Azure Database for PostgreSQL 灵活服务器。 有关迁移到 Azure Database for PostgreSQL 灵活服务器的详细信息,请参阅
Azure Database for PostgreSQL 单一服务器的最新动态?
本快速入门演示了如何使用 C# 应用程序连接到 Azure Database for PostgreSQL。 同时还介绍了如何使用 SQL 语句在数据库中查询、插入、更新和删除数据。 本文中的步骤假定你熟悉如何使用 C# 进行开发,但不熟悉如何使用 Azure Database for PostgreSQL。
对于本快速入门,你需要:
具有活动订阅的 Azure 帐户。
免费创建帐户
。
使用
Azure 门户
或
Azure CLI
创建 Azure Database for PostgreSQL 单一服务器(如果没有)。
请完成以下操作之一以启用连接,具体取决于你使用的是公共访问还是私有访问。
步骤 1:连接并插入数据
通过以下代码进行连接,然后使用 CREATE TABLE 和 INSERT INTO SQL 语句加载数据。 代码使用 NpgsqlCommand 类和以下方法:
Open()
,用于与 PostgreSQL 数据库建立连接。
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@mydemoserver";
private static string DBname = "mypgsqldb";
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@mydemoserver";
private static string DBname = "mypgsqldb";
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 建立连接。
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@mydemoserver";
private static string DBname = "mypgsqldb";
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 数据库的连接。 然后,代码使用 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 = "mypgsqldb";
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
使用门户管理 Azure Database for MySQL 服务器
使用 CLI 管理 Azure Database for MySQL 服务器