你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:使用 .NET (C#) 连接到 Azure Database for MySQL 灵活服务器并查询其中的数据
适用于: Azure Database for MySQL 灵活服务器
本快速入门演示如何使用 C# 应用程序连接到 Azure Database for MySQL 灵活服务器实例。 同时还介绍了如何使用 SQL 语句在数据库中查询、插入、更新和删除数据。
先决条件
对于本快速入门,你需要:
具有活动订阅的 Azure 帐户。
如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户。 目前,通过 Azure 免费帐户,可以在 12 个月内免费试用 Azure Database for MySQL - 灵活服务器。 有关详细信息,请参阅免费试用 Azure Database for MySQL 灵活服务器。
使用 Azure 门户创建 Azure Database for MySQL 灵活服务器实例
或 Azure CLI 创建 Azure Database for PostgreSQL 单一服务器(如果没有)。请完成以下操作之一以启用连接,具体取决于你使用的是公共访问还是私有访问。
安装适用于平台(Windows、Ubuntu Linux 或 macOS)的 .NET SDK。
创建一个 C# 项目
在命令提示符处运行以下命令:
mkdir AzureMySqlExample
cd AzureMySqlExample
dotnet new console
dotnet add package MySqlConnector
获取连接信息
获取连接到 Azure Database for MySQL 灵活服务器实例所需的连接信息。 需要完全限定的服务器名称和登录凭据。
- 登录到 Azure 门户。
- 在 Azure 门户的左侧菜单中,选择“所有资源”,然后搜索已创建的服务器(例如 mydemoserver)。
- 选择服务器名称。
- 从服务器的“概览”面板中记下“服务器名称”和“服务器管理员登录名”。 如果忘记了密码,也可通过此面板来重置密码。
步骤 1:连接并插入数据
通过以下代码来连接和加载数据,只需使用 CREATE TABLE
和 INSERT INTO
SQL 语句即可。 代码使用 MySqlConnection
类的以下方法:
- OpenAsync(),用于与 MySQL 建立连接。
- CreateCommand(),用于设置 CommandText 属性
- ExecuteNonQueryAsync(),用于运行数据库命令。
将 Server
、Database
、UserID
、Password
参数替换为你在创建服务器和数据库时指定的值。
using System;
using System.Threading.Tasks;
using MySqlConnector;
namespace AzureMySqlExample
{
class MySqlCreate
{
static async Task Main(string[] args)
{
var builder = new MySqlConnectionStringBuilder
{
Server = "YOUR-SERVER.mysql.database.azure.com",
Database = "YOUR-DATABASE",
UserID = "USER",
Password = "PASSWORD",
SslMode = MySqlSslMode.Required,
};
using (var conn = new MySqlConnection(builder.ConnectionString))
{
Console.WriteLine("Opening connection");
await conn.OpenAsync();
using (var command = conn.CreateCommand())
{
command.CommandText = "DROP TABLE IF EXISTS inventory;";
await command.ExecuteNonQueryAsync();
Console.WriteLine("Finished dropping table (if existed)");
command.CommandText = "CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);";
await command.ExecuteNonQueryAsync();
Console.WriteLine("Finished creating table");
command.CommandText = @"INSERT INTO inventory (name, quantity) VALUES (@name1, @quantity1),
(@name2, @quantity2), (@name3, @quantity3);";
command.Parameters.AddWithValue("@name1", "banana");
command.Parameters.AddWithValue("@quantity1", 150);
command.Parameters.AddWithValue("@name2", "orange");
command.Parameters.AddWithValue("@quantity2", 154);
command.Parameters.AddWithValue("@name3", "apple");
command.Parameters.AddWithValue("@quantity3", 100);
int rowCount = await command.ExecuteNonQueryAsync();
Console.WriteLine(String.Format("Number of rows inserted={0}", rowCount));
}
// connection will be closed by the 'using' block
Console.WriteLine("Closing connection");
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
步骤 2:读取数据
使用以下代码进行连接,并使用 SELECT
SQL 语句读取数据。 该代码将 MySqlConnection
类与以下方法配合使用:
- OpenAsync(),用于与 MySQL 建立连接。
- CreateCommand(),用于设置 CommandText 属性。
- ExecuteReaderAsync(),用于运行数据库命令。
- ReadAsync(),用于转到结果中的记录。 然后,代码使用 GetInt32 和 GetString 分析记录中的值。
将 Server
、Database
、UserID
、Password
参数替换为你在创建服务器和数据库时指定的值。
using System;
using System.Threading.Tasks;
using MySqlConnector;
namespace AzureMySqlExample
{
class MySqlRead
{
static async Task Main(string[] args)
{
var builder = new MySqlConnectionStringBuilder
{
Server = "YOUR-SERVER.mysql.database.azure.com",
Database = "YOUR-DATABASE",
UserID = "USER@YOUR-SERVER",
Password = "PASSWORD",
SslMode = MySqlSslMode.Required,
};
using (var conn = new MySqlConnection(builder.ConnectionString))
{
Console.WriteLine("Opening connection");
await conn.OpenAsync();
using (var command = conn.CreateCommand())
{
command.CommandText = "SELECT * FROM inventory;";
using (var reader = await command.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
Console.WriteLine(string.Format(
"Reading from table=({0}, {1}, {2})",
reader.GetInt32(0),
reader.GetString(1),
reader.GetInt32(2)));
}
}
}
Console.WriteLine("Closing connection");
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
步骤 3:更新数据
使用以下代码进行连接,并使用 UPDATE
SQL 语句读取数据。 该代码将 MySqlConnection
类与以下方法配合使用:
- OpenAsync(),用于与 MySQL 建立连接。
- CreateCommand(),用于设置 CommandText 属性
- ExecuteNonQueryAsync(),用于运行数据库命令。
将 Server
、Database
、UserID
、Password
参数替换为你在创建服务器和数据库时指定的值。
using System;
using System.Threading.Tasks;
using MySqlConnector;
namespace AzureMySqlExample
{
class MySqlUpdate
{
static async Task Main(string[] args)
{
var builder = new MySqlConnectionStringBuilder
{
Server = "YOUR-SERVER.mysql.database.azure.com",
Database = "YOUR-DATABASE",
UserID = "USER",
Password = "PASSWORD",
SslMode = MySqlSslMode.Required,
};
using (var conn = new MySqlConnection(builder.ConnectionString))
{
Console.WriteLine("Opening connection");
await conn.OpenAsync();
using (var command = conn.CreateCommand())
{
command.CommandText = "UPDATE inventory SET quantity = @quantity WHERE name = @name;";
command.Parameters.AddWithValue("@quantity", 200);
command.Parameters.AddWithValue("@name", "banana");
int rowCount = await command.ExecuteNonQueryAsync();
Console.WriteLine(String.Format("Number of rows updated={0}", rowCount));
}
Console.WriteLine("Closing connection");
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
步骤 4:删除数据
使用以下代码进行连接,并使用 DELETE
SQL 语句删除数据。
该代码将 MySqlConnection
类与以下方法配合使用
- OpenAsync(),用于与 MySQL 建立连接。
- CreateCommand(),用于设置 CommandText 属性。
- ExecuteNonQueryAsync(),用于运行数据库命令。
将 Server
、Database
、UserID
、Password
参数替换为你在创建服务器和数据库时指定的值。
using System;
using System.Threading.Tasks;
using MySqlConnector;
namespace AzureMySqlExample
{
class MySqlDelete
{
static async Task Main(string[] args)
{
var builder = new MySqlConnectionStringBuilder
{
Server = "YOUR-SERVER.mysql.database.azure.com",
Database = "YOUR-DATABASE",
UserID = "USER",
Password = "PASSWORD",
SslMode = MySqlSslMode.Required,
};
using (var conn = new MySqlConnection(builder.ConnectionString))
{
Console.WriteLine("Opening connection");
await conn.OpenAsync();
using (var command = conn.CreateCommand())
{
command.CommandText = "DELETE FROM inventory WHERE name = @name;";
command.Parameters.AddWithValue("@name", "orange");
int rowCount = await command.ExecuteNonQueryAsync();
Console.WriteLine(String.Format("Number of rows deleted={0}", rowCount));
}
Console.WriteLine("Closing connection");
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
清理资源
若要清理本快速入门中使用的所有资源,请使用以下命令删除该资源组:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes