Azure Database for MySQL: .NET(C#)을 사용하여 데이터 연결 및 쿼리Azure Database for MySQL: Use .NET (C#) to connect and query data

이 빠른 시작에서는 C# 애플리케이션을 사용하여 MySQL용 Azure Database에 연결하는 방법을 보여 줍니다.This quickstart demonstrates how to connect to an Azure Database for MySQL by using a C# application. SQL 문을 사용하여 데이터베이스의 데이터를 쿼리, 삽입, 업데이트 및 삭제하는 방법을 보여 줍니다.It shows how to use SQL statements to query, insert, update, and delete data in the database. 이 항목에서는 C#을 사용하여 개발하는 데 익숙하고 MySQL용 Azure Database를 처음 사용한다고 가정합니다.This topic assumes that you are familiar with developing using C# and that you are new to working with Azure Database for MySQL.

사전 요구 사항Prerequisites

이 빠른 시작에서는 다음과 같은 가이드 중 하나에서 만들어진 리소스를 시작 지점으로 사용합니다.This quickstart uses the resources created in either of these guides as a starting point:

다음과 같은 작업도 필요합니다.You also need to:

  • .NET을 설치합니다.Install .NET. 연결된 문서의 단계에 따라 사용하는 플랫폼(Windows, Ubuntu Linux 또는 macOS)에 맞는 .NET을 설치합니다.Follow the steps in the linked article to install .NET specifically for your platform (Windows, Ubuntu Linux, or macOS).
  • Visual Studio를 설치합니다.Install Visual Studio.

중요

연결하려는 IP 주소에 Azure Portal 또는 Azure CLI를 사용하여 서버의 방화벽 규칙이 추가되었는지 확인합니다.Ensure the IP address you're connecting from has been added the server's firewall rules using the Azure portal or Azure CLI

C# 프로젝트 만들기Create a C# project

명령 프롬프트에서 다음을 실행합니다.At a command prompt, run:

mkdir AzureMySqlExample
cd AzureMySqlExample
dotnet new console
dotnet add package MySqlConnector

연결 정보 가져오기Get connection information

MySQL용 Azure Database에 연결하는 데 필요한 연결 정보를 가져옵니다.Get the connection information needed to connect to the Azure Database for MySQL. 정규화된 서버 이름 및 로그인 자격 증명이 필요합니다.You need the fully qualified server name and login credentials.

  1. Azure Portal에 로그인합니다.Log in to the Azure portal.
  2. Azure Portal의 왼쪽 메뉴에서 모든 리소스를 클릭한 다음, 방금 만든 서버를 검색합니다(예: mydemoserver).From the left-hand menu in Azure portal, click All resources, and then search for the server you have created (such as mydemoserver).
  3. 서버 이름을 클릭합니다.Click the server name.
  4. 서버의 개요 패널에 있는 서버 이름서버 관리자 로그인 이름을 기록해 둡니다.From the server's Overview panel, make a note of the Server name and Server admin login name. 암호를 잊어버리면 이 패널에서 암호를 재설정할 수 있습니다.If you forget your password, you can also reset the password from this panel. MySQL용 Azure Database 서버 이름Azure Database for MySQL server name

테이블 연결, 생성 및 데이터 삽입Connect, create table, and insert data

CREATE TABLEINSERT INTO SQL 문을 사용하여 데이터를 연결하고 읽으려면 다음 코드를 사용하세요.Use the following code to connect and load the data by using CREATE TABLE and INSERT INTO SQL statements. 이 코드는 OpenAsync() 메서드가 포함된 MySqlConnection 클래스를 사용하여 MySQL에 대한 연결을 설정합니다.The code uses the MySqlConnection class with method OpenAsync() to establish a connection to MySQL. 그런 다음, CreateCommand() 메서드를 사용하고, CommandText 속성을 설정하고, ExecuteNonQueryAsync() 메서드를 호출하여 데이터베이스 명령을 실행합니다.Then the code uses method CreateCommand(), sets the CommandText property, and calls method ExecuteNonQueryAsync() to run the database commands.

Server, Database, UserIDPassword 매개 변수는 서버 및 데이터베이스를 만들 때 지정한 값으로 바꿉니다.Replace the Server, Database, UserID, and Password parameters with the values that you specified when you created the server and database.

using System;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

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

데이터 읽기Read data

SELECT SQL 문을 사용하여 데이터를 연결하고 읽으려면 다음 코드를 사용하세요.Use the following code to connect and read the data by using a SELECT SQL statement. 이 코드는 OpenAsync() 메서드가 포함된 MySqlConnection 클래스를 사용하여 MySQL에 대한 연결을 설정합니다.The code uses the MySqlConnection class with method OpenAsync() to establish a connection to MySQL. 그리고 CreateCommand() 메서드와 ExecuteReaderAsync() 메서드를 사용하여 데이터베이스 명령을 실행합니다.Then the code uses method CreateCommand() and method ExecuteReaderAsync() to run the database commands. 그런 다음, ReadAsync()를 사용하여 결과의 레코드로 이동합니다.Next the code uses ReadAsync() to advance to the records in the results. 그런 다음 GetInt32 및 GetString을 사용하여 레코드의 값을 구문 분석합니다.Then the code uses GetInt32 and GetString to parse the values in the record.

Server, Database, UserIDPassword 매개 변수는 서버 및 데이터베이스를 만들 때 지정한 값으로 바꿉니다.Replace the Server, Database, UserID, and Password parameters with the values that you specified when you created the server and database.

using System;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

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

데이터 업데이트Update data

UPDATE SQL 문을 사용하여 데이터를 연결하고 읽으려면 다음 코드를 사용하세요.Use the following code to connect and read the data by using an UPDATE SQL statement. 이 코드는 OpenAsync() 메서드가 포함된 MySqlConnection 클래스를 사용하여 MySQL에 대한 연결을 설정합니다.The code uses the MySqlConnection class with method OpenAsync() to establish a connection to MySQL. 그런 다음, CreateCommand() 메서드를 사용하고, CommandText 속성을 설정하고, ExecuteNonQueryAsync() 메서드를 호출하여 데이터베이스 명령을 실행합니다.Then the code uses method CreateCommand(), sets the CommandText property, and calls method ExecuteNonQueryAsync() to run the database commands.

Server, Database, UserIDPassword 매개 변수는 서버 및 데이터베이스를 만들 때 지정한 값으로 바꿉니다.Replace the Server, Database, UserID, and Password parameters with the values that you specified when you created the server and database.

using System;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

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

데이터 삭제Delete data

DELETE SQL 문을 사용하여 데이터를 연결하고 삭제하려면 다음 코드를 사용하세요.Use the following code to connect and delete the data by using a DELETE SQL statement.

이 코드는 OpenAsync() 메서드가 포함된 MySqlConnection 클래스를 사용하여 MySQL에 대한 연결을 설정합니다.The code uses the MySqlConnection class with method OpenAsync() to establish a connection to MySQL. 그런 다음, CreateCommand() 메서드를 사용하고, CommandText 속성을 설정하고, ExecuteNonQueryAsync() 메서드를 호출하여 데이터베이스 명령을 실행합니다.Then the code uses method CreateCommand(), sets the CommandText property, and calls method ExecuteNonQueryAsync() to run the database commands.

Server, Database, UserIDPassword 매개 변수는 서버 및 데이터베이스를 만들 때 지정한 값으로 바꿉니다.Replace the Server, Database, UserID, and Password parameters with the values that you specified when you created the server and database.

using System;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

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

다음 단계Next steps