[Tip] C# MySQL, Visual Studio 사용 방법 및 연결 테스트 : NuGet Package를 통한 연동

2022. 11. 23. 03:04·■ Dev. Language/C#
반응형

0. 목적

C# 프로젝트에서 MySQL DB를 사용하기 위해, 참조를 추가하는 방법에 대해 알아보자. Visual Studio에서 제공하는 NuGet Package 설치 마법사를 이용해, 손쉽게 해결해 보자.


1. 참고

본 포스트에서는 Windows 10 Pro 운영체제를 구동하는 컴퓨터에서 Visual Studio 2022 IDE를 사용했으며, MySQL Workbench 8.0.31 환경에서 진행되었다. 또한, 본 포스트에서 연결 테스트에 사용된 SCHEMAS는 MySQL에서 기본 제공되는 world SCHEMAS를 사용했으니, 동일한 테스트를 진행하고 싶은 사람들은 아래의 링크를 참고하도록 하자.

 

[MySQL] MySQL 샘플 데이터베이스, 공식 다운로드 및 적용하는 방법

0. 목적 MySQL 연습을 위해, MySQL 에서 공식적으로 제공하는 샘플 데이터베이스를 다운로드 받는 방법을 알아본다. 동시에, 내려받은 샘플 데이터베이스를 GUI 환경인 MySQL Workbench를 이용해 MySQL에

acredev.tistory.com


2. NuGet 패키지 설치

상단 메뉴바의 프로젝트 → NuGet 패키지 관리 버튼을 클릭한다.

 

 

 

찾아보기 버튼을 클릭하고, mysql을 검색한다. MySql.Data 항목이 표시되면, 우측의 설치 버튼을 클릭해 NuGet 패키지를 설치한다.

 

 

 

라이선스 승인 화면이 출력되면, 동의함버튼을 클릭 후 넘어가면 된다.

 

 

 

설치가 완료되면, 솔루션 탐색기 트리 메뉴의 참조 항목에 MySql.Data dll 파일이 정상적으로 참조되어 있는 모습을 확인할 수 있다. 신규 프로젝트 생성 시마다 위 절차를 밟아주면 된다.


3. MySQL 연결 테스트

Visual Studio에서 C# 콘솔 앱 프로젝트를 하나 생성한다.

 

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient; // MySQL 참조

코드 최상단에, MySQL 명령어를 사용하기 위한MySql.Data.MySqlClient; 참조문을 using 해준다.

 

 

 

namespace mysql_connect_test
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
            	// MySQL 연결 명령어
                MySqlConnection connection = new MySqlConnection("Server=localhost;Database=world;Uid=root;Pwd=root");
                // MySQL 서버 연결 유지
                connection.Open();

                // MySQL로 보낼 문자열 Query 변수 선언
                string Query = "SELECT * FROM world.city WHERE name = 'kabul';";
                // MySqlCommand 클래스를 사용해 쿼리문을 MySQL로 전송
                MySqlCommand command = new MySqlCommand(Query, connection);

                // MySqlDataReader 클래스와 ExecuteReader() 함수를 이용해,
                // 받아온 정보를 reader에 저장
                MySqlDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    // 받아온 reader의 정보 중, name 열만 출력
                    Console.WriteLine((string)reader["name"]);
                }
                // MySQL 서버 연결 종료
                connection.Close();
            }
            catch (Exception ex)
            { Console.WriteLine(ex.Message.ToString()); }
        }
    }
}

namespace 내부에, 간단한 코드를 작성해서 MySQL 연결이 정상적으로 이루어졌는지 테스트를 해 보자. 본 코드는 world SCHEMAS의 city 테이블에 위치한 Name이 Kabul인 데이터 중, Name 데이터만 Console 창에 출력하는 코드이다.

 

필자의 경우 MySQL 데이터베이스 연결 아이디와 비밀번호가 모두 root로 동일하기 때문에 "Uid=root, Pwd=root" 로 지정했는데, 필자와 다른 경우 해당 부분만 수정해서 활용하면 된다.

 

C#에서 사용되는 MySQL의 연결 명령어 구조는?

▣ MySqlConnection

MySqlConnection은 MySQL 연결을 위한 클래스이다. new 연산자를 통해 객체를 하나 생성해서 사용한다. 상기 코드에서는 connection 이름의 객체를 생성해서 사용했다.

"" 큰 따옴표로 감싸진 명령어에는 Server, Database, Uid, Pwd 등이 삽입되는데, Server에는 서버 주소, Database에는 사용할 DB SCHEMAS 명칭, Uid에는 DB 연결 아이디, Pwd에는 DB 연결 비밀번호를 입력하면 된다.

▣ 객체명.Open();

MySqlConnection 클래스를 사용하기 위해 connection 객체를 앞서 생성했었다. 상기 코드에서는 따라서 connection.Open(); 명령어를 사용했다.

본 명령어는 MySQL 서버와 본 프로그램 간의 서버 연결을 유지하기 위한 명령어이다.

▣ 객체명.Close();

본 명령어는 MySQL 서버와 본 프로그램 간의 서버 연결을 종료하기 위한 명령어이다.

MySQL에 쿼리문을 모두 보내서 레코드 (row) 들을 받아왔으면 연결을 종료하기 위함인데, 굳이 해당 명령어를 사용해야 하나? 에 대한 의견은 아직까지 분분하다.

하지만, 내 경험상 WinForm 프로젝트 제작 시 MySQL 에서 받아온 레코드 (row) 정보들을 예외처리 하기 위해서는 본 명령어를 사용해야 좀 더 편했던 경험이 있었고, 굳이 MySQL 사용이 종료되었는데도 연결을 유지하며 리소스를 낭비하고 있을 필요는 없으니 사용하는 것을 추천한다. 게다가 코드도 짧은데, 안 쓸 이유는 없다고 본다.

▣ MySqlCommand

MySqlCommand는 MySQL에 쿼리문을 넘기기 위해 사용하는 클래스이다. new 연산자를 통해 객체를 하나 생성해서 사용한다. 상기 코드에서는 command 이름의 객체를 생성해서 사용했다.

() 사이에는 차례로 쿼리문과 연결 정보들이 담겨있는 객체를 삽입한다. 따라서, 상기 코드에서는 문자열 변수로 선언했던 Query 변수와 앞서 생성했던 connection 객체를 입력하기 위해 (Query, connection) 으로 명령어를 지정했다.

▣ MySqlDataReader

MySqlCommand는 서버와 프로그램 간의 연결이 유지되어 있는 상태에서, 쿼리문을 보내 받아온 정보들을 한 번의 한 레코드 (row) 씩 가져오기 위한 클래스이다.

결과값을 받아오기 위해 ExecuteReader() 함수를 함께 사용하며, 받아온 결과값을 reader 에 저장하기 위해 상기 코드를 작성했다.

 

 

 

Ctrl + F5 버튼을 눌러 디버그 하지 않고 시작을 해 보자. world SCEMAS의 city 테이블에 있는 Kabul 데이터의 Name 항목만 정상적으로 불러와진 모습을 확인할 수 있다. 이로서 MySQL 연결이 정상적으로 완료되었는지 또한 확인할 수 있었다.

300x250
반응형
저작자표시 비영리 변경금지 (새창열림)
'■ Dev. Language/C#' 카테고리의 다른 글
  • [C# 개발] MySQL DB 연동: 중복된 데이터인지 검사하는 프로그램 만들기 (WinForm)
  • [C# 개발] SMS 인증 번호를 발송해, 휴대폰 본인인증 확인하는 시스템 구현하기 (WinForm)
  • [C# 개발] 인증 번호를 발송해 이메일 본인인증 확인하는 시스템 구현하기
  • [C# 개발] MySQL DB 연동을 통해 간단한 로그인 및 회원가입 폼 만들기
Min Hyuk-Lee
Min Hyuk-Lee
시스템 엔지니어로 근무하고 있습니다.
  • Min Hyuk-Lee
    아크레의 개발로그
    Min Hyuk-Lee
    m_file@naver.com
  • 전체
    오늘
    어제
    • 📝 Log. (81)
      • ■ Dev. Language (11)
        • C (5)
        • C# (6)
      • ■ Dev. ETC (8)
        • Unity 3D (3)
        • Android Studio (JAVA) (5)
      • ■ Web (6)
        • HTML (3)
        • JSP (3)
      • ■ Linux (8)
        • Shell (2)
        • Linux Tip. (6)
        • 보안취약점 진단 (0)
      • ■ Windows (4)
        • Server (1)
        • Windows Tip. (3)
      • ■ VM (1)
        • VMWare (1)
        • Virtual Box (0)
      • ■ Database (9)
        • MySQL (7)
        • OracleDB (2)
      • ■ DevKit (5)
        • IDE (4)
        • Tool (1)
      • ■ Error (17)
        • Linux 오류해결 (4)
        • DB 오류해결 (3)
        • IDE 오류해결 (2)
        • VM 오류해결 (3)
        • Unity 오류해결 (4)
        • SSH, SFTP 오류해결 (1)
      • ■ Photoshop (3)
        • 디자인&이미지 창작 (3)
      • ■ Document (3)
        • MS Word (2)
        • PDF (1)
      • ■ Study (4)
        • Baekjoon (4)
      • ■ 작문 (1)
        • 회고 (1)
      • ■ ETC (1)
        • Car (0)
        • etc (1)
  • 🌐 Menu

    • 📓 Guestbook
  • 🔗 Other Links

    • GitHub
    • 아크레의 IT ISSUE
  • 📢 Notice

    • [스킨 업데이트] hELLO v4.10.0 적용완료
    • [스킨 업데이트] hELLO v4.9.0 적용 완료
    • [스킨 업데이트] hELLO v4.8.1 적용 완료
  • 💬 Recent Comments

  • hELLO· Designed By정상우.v4.10.0
Min Hyuk-Lee
[Tip] C# MySQL, Visual Studio 사용 방법 및 연결 테스트 : NuGet Package를 통한 연동
상단으로

티스토리툴바