[C#] MariaDB 사용하기

정회민·2023년 3월 22일

Windows10 환경에서 진행하고 .net framework 개발 환경이니 참고 바랍니다.
.net framework 버전이 4.5.2 이상이어야 함.

설정

C#에서 MariaDB를 사용하기 위해서는 MySql.Data.dll 라이브러리를 등록해야 한다.

따라서 MySQL을 설치하기 위해 사이트로 접속하여 mysql-connector-net-[버전정보].msi를 설치한다.
https://dev.mysql.com/downloads/connector/net/

설치하면 위 사진과 같이 MySql.Data.dll을 확인 할 수 있다.

프로젝트를 열고 솔루션 탐색기 > [프로젝트] > 참조 우클릭 > 참조 추가 를 실행하고


찾아보기 버튼을 눌러 MySql.Data.dll를 찾고


위 사진과 같이 선택한 후 확인 버튼을 누른다.

사용

DB 정보 설정 및 연결

using MySql.Data.MySqlClient;


class MariaDBInfo
{
	private string ip;
    private int port;
    private string uid;
    private string pwd;
    private string dbname;
    private MySqlConnection conn;
    
    public MariaDBInfo(string ip, int port, string uid
    								, string pwd, string dbname)
	{
		this.ip = ip;
        this.port = port;
        this.uid = uid;
        this.pwd = pwd;
        this.dbname = dbname;
        this.conn = null;
    }
    
    public void initDB()
    {
    	// CharSet=utf8 설정을 안하면 한글 입출력시 물음표(?)로 인식
    	string connectString
        	= $"Server={ip};Port={port};Database={dbname};Uid={uid};Pwd={pwd};CharSet=utf8;";
        try
        {
        	conn = new MySqlConnection(connectString);	// DB 설정
            conn.Open();	// DB 연결
        }catch (Exception ex)
        {
        	Console.WriteLine($"Error: {ex.Message}");
        }
    }
    
    public MySqlConnection getConnection()
    {
    	if (conn == null)
        	initDB();
		return conn;
    }
}

Select

using MySql.Data.MySqlClient;


class MyData
{
	private int id;
    private string name;
 
	public MyData(int id, string name)
    {
    	this.id = id;
        this.name = name;
    }
}

class MariaDBManager
{
	MariaDBInfo dbinfo;
    
    public MariaDBManager()
    {
    	dbinfo = new MariaDBInfo("127.0.0.1", 3306, "root", "passwd", "testdb");
    }
    
    // string query = "select id, name from tbl_mydata";
    public List<MyData> selectQry(string query)
    {
    	List<MyData> result = new List<MyData>();
        try
        {
        	MySqlCommand cmd = new MySqlCommand(query, dbinfo.getConnection());
            MySqlDataReader dr = cmd.ExecuteReader();
            
            while (dr.Read())
            {
            	// 데이터 조회시 null 값이 있을 경우에는 예외처리 필요.
            	result.Add(new MyData(int.Parse(dr[0].ToString()), dr[i].ToString()));
            }
        } catch (Exception ex)
        {
        	Console.WriteLine($"Error: {ex.Message}");
            return null;
        } finally
        {
        	dr.Close();
        }
		return result;
    }
}	

Insert & Update & Delete

// class MariaDBManager 에 있는 함수
public void CUDQry(string query)	// C:insert, U: update, D: delete
{
	try
    {
    	MySqlCommand cmd = new MySqlCommand(query, dbinfo.getConnection());
        cmd.ExecuteNonQuery();
    } catch (Exception ex)
	{
		Console.WriteLine($"Error: {ex.Message}");
	}
}
profile
Nest.js, Delphi 개발자

0개의 댓글