빠른 시작: .NET(C#)을 사용하여 Azure Database for MySQL - 유연한 서버에서 데이터 연결 및 쿼리
적용 대상: Azure Database for MySQL - 유연한 서버
이 빠른 시작에서는 C# 애플리케이션을 사용하여 Azure Database for MySQL 유연한 서버 인스턴스에 연결하는 방법을 보여 줍니다. SQL 문을 사용하여 데이터베이스의 데이터를 쿼리, 삽입, 업데이트 및 삭제하는 방법을 보여 줍니다.
필수 조건
이 빠른 시작에는 다음이 필요합니다.
활성 구독이 있는 Azure 계정.
Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다. 현재 Azure 무료 계정을 사용하면 Azure Database for MySQL - 유연한 서버를 12개월 동안 무료로 사용해 볼 수 있습니다. 자세한 내용은 Azure Database for MySQL - 유연한 서버를 무료로 사용해 보기를 참조하세요.
Azure Portal을 사용하여 Azure Database for MySQL 유연한 서버 인스턴스를 만듭니다.
또는 Azure CLI를 만듭니다(없는 경우).퍼블릭 또는 프라이빗 액세스를 사용하는지 여부에 따라 아래 작업 중 하나를 완료하여 연결을 활성화합니다.
플랫폼에 플랫폼용 .NET SDK(Windows, Ubuntu Linux 또는 macOS)를 설치합니다.
C# 프로젝트 만들기
명령 프롬프트에서 다음을 실행합니다.
mkdir AzureMySqlExample
cd AzureMySqlExample
dotnet new console
dotnet add package MySqlConnector
연결 정보 가져오기
Azure Database for MySQL 유연한 서버 인스턴스에 연결하는 데 필요한 연결 정보를 가져옵니다. 정규화된 서버 이름 및 로그인 자격 증명이 필요합니다.
- Azure Portal에 로그인합니다.
- Azure Portal의 왼쪽 메뉴에서 모든 리소스를 선택한 다음, 생성한 서버를 검색합니다(예: 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