IT/C#

[C#] 가계부 프로그램 만들기 DAY1. Database 설정 및 연결

Ella.J 2020. 2. 28. 15:36
728x90
반응형

새해 다짐으로 올해도 돈을 한 번 조금만 써보자.. 돈 관리를 해보자.. 하는 바람에서 가계부를 만들어보기로 했습니다.

부자가 되는 그날까지 돈을 열심히 벌고 열심히 관리하자는 의미도 있고, 블로그도 더 열심히 하기 위해서!

4차에 걸쳐 포스팅을 할 계획이며, 굉장히 기본(?)적인 것만 포스팅할 예정입니다.

다들 쉽게 따라할 수 있을 거라 생각됩니다..ㅎㅎ

주의!

부족한 점이 많습니다. 감안하여 봐주시고 부족한 점은 피드백 겁나 환영합니다 : )

미적인 요소는 제외하고 만들었습니다. 각자 취향껏 UI를 꾸며보세요!


첫 번째. DB 생성 및 사용자 추가/권한 부여

 

일단 기본적으로 사용할 데이터베이스 이름, 서버, 사용자 ID, Password 이름은 다음과 같습니다.

이것을 먼저 설정해보도록 하겠습니다.

database : account_db

Server : localhost

user : user1

password : user1234

 

저는 DB는 Mysql을 사용했으며 기존에 설치돼있는 8.0.11 Version을 사용 중입니다.

MySQL 8.0 Command Line Client를 열고 관리자 비밀번호를 입력하여 접속합니다.

참고로 버전은 아래와 같이 Server version으로 확인 가능합니다.

먼저, 가계부 관리를 위한 데이터베이스 생성을 해보겠습니다. 

데이터베이스 생성 Syntax는 CREATE DATABASE database_name; 이며,

위와 같이 mysql> create database account_db; 입력 후 엔터 치면 데이터베이스 생성이 완료됩니다.

데이터베이스에 접속하기 위한 Syntax는 USE database_name;이며,

위와 같이 mysql> use account_db; 입력 후 엔터치면 Database changed라는 문구가 나오며

생성된 account_db 데이터베이스로 접속할 수 있습니다.

 

다음으로, 데이터베이스를 사용하고 접속하기 위한 사용자 설정을 해보겠습니다.

데이터베이스 사용자 설정을 위한 Syntax는

CREATE USER user_id@LOCALHOST IDENTIFIED BY  'password'; 이며,

위와 같이 mysql> create user user1@localhost identified by 'user1234'; 를 입력하면 계정이 생성됩니다.

(위 이미지에는 user1로 돼있는데, 이미 user1 계정이 있어서 user2로 만들었습니다.)

그리고 사용자가 데이버베이스의 모든 테이블에 대한 권한을 가지기 위해 권한 설정을 해줍니다.

모든 권한을 부여하기 위한 Syntax는

GRANT ALL PRIVIELEGES ON database_name.* TO user_id@localhost [IDENTIFIED BY password];

이며 권한을 부여하면서 비밀번호도 변경하고 싶으면 뒤에 IDENTIFIED BY password를 추가해주면 되고,

만약 권한이 없는 사용자가 데이터베이스에 접속하려고 하면 프로그램 실행 시 권한이 없다는 에러 메시지를 받을 수 있습니다.


두 번째. 테이블, 컬럼목록 및 테이블 생성

 

가계부 사용자 등등 다른 테이블도 있지만, 일단 기본으로 4개의 테이블을 생성해보도록 하겠습니다.

테이블 이름은 각각 다음과 같습니다.

tables : setting_info, account_info, credit_info, account_book

 

테이블 생성 Syntax

CREATE TABLE table_name (

   Column_name1 column_type1,

   Column_name2 column_type2

);

 

1. 설정 정보 (setting_info)

수입 계정 (import_info), 지출 계정 (export_info)

: 본인에 맞게 수입 계정과 지출계정을 등록하고, 변경할 수 있습니다.

 

Ex) 수입계정 : 급여, 출장비, 캐시백/이자, 기타 등등

Ex) 지출 게정 : 월세, 보험료, 통신비, 관리비, 식비, 교통비, 커피값, 술값, 택시비, 의류, 생활용품, 기타 등등

 

create table setting_info (

   import_info varchar(50),

   export_info varchar(50)

);

 

2. 계좌정보 (account_info)

은행명 (bank_name), 계좌명(애칭) (account_name), 연결 체크카드 (connect_card), 최초 잔액 (first_balance), 메모 (memo)

 : 본인이 보유하고 있는 계좌의 정보를 등록합니다. 최초 잔액을 작성해야 가계부 및 계좌관리에 사용할 수 있습니다.

 

Ex) '신한', '급여통장', '신한체크카드', 30000000, '급여 통장'

Ex) '국민', '신카출금', '국민체크카드', 40000000, '신카출금계좌'

 

create table account_info (

   bank_name varchar(50),

   account_name varchar(50),

   connect_card varchar(50),

   first_balance int,

   memo varchar(100)

);

 

3. 신용카드정보 (credit_info)

신용카드사 (credit_bank), 카드명(애칭) (card_name), 출금계좌 (withdraw_account), 은행명 (bank_name), 출금일 (withdraw_date), 사용 실적 기간 (use_term)

 : 개인이 보유하고 있는 신용카드의 정보를 등록합니다. 출금일 및 사용 실적 기간을 작성하면 신용카드 사용내역을 집계할 수 있습니다. 출금계좌에 입력하는 계좌는 2.의 계좌정보 (account_info)에서 본인이 보유하고 있는 계좌 중 신용카드와 연결된 계좌의 계좌명(애칭) (account_name)을 입력합니다.

 

Ex) '삼성카드',' taptap O','신카출금','국민은행','26일','전월 13일 ~ 당월 12일'

 

create table credit_info (

   credit_bank varchar(50),

   card_name varchar(50),

   withdraw_account varchar(50),

   bank_name varchar(50),

   withdraw_date varchar(50),

   use_term varchar(100)

);

 

4. 가계부 상세 사용내역 (account_book)

No. (no), 날짜 (use_date), 구분 (use_type), 계정 (account), 입/출금 구분 (ie_type), 입/출금 기준 (ie_standard), 금액 (use_cost), 상세 내역 및 비고 (remarks)

 : 가계부 사용 내역을 입력하는 테이블입니다.

 

Ex) 1,"1/25/2020", "수입", "급여", "계좌입금", "급여통장",50000000, "1월 급여"

 

create table account_book (

   no int primary key,

   use_date date,

   use_type varchar(50),

   account varchar(50),

   ie_type varchar(50),

   ie_standard varchar(50),

   use_cost int,

   remarks varchar(150)

);

 

위와 같이 각각의 테이블 생성을 완료하면 Query OK가 나오고

Mysql> Show tables; 라는 구문을 입력하면 생성된 table을 확인할 수 있습니다.

테이블 확인 Syntax SHOW TABLES;


세 번째. C# DB 연결하기

 

Visual Studio를 열고 새 프로젝트를 생성합니다.

Windows Forms app (.NET Framework) 를 선택하고 AccountBook이라고 솔루션 이름을 생성해줍니다.

Class 폴더를 하나 만들고 그 안에 DBMysql.cs 클래스를 만들어서

Select, Insert, Update, Delete 함수를 생성해줍니다.

2019/05/27 - [IT] - [C#][Database] Mysql Database 연결하기

 

[C#][Database] Mysql Database 연결하기

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69..

ella-devblog.tistory.com

DBMysql 클래스는 위의 지난번 포스팅을 참고해 주세요.

사용한 Syntax :

SELECT * FROM table_name;

SELECT field1, field2, … FROM table_name [WHERE condition];

INSER INTO table_name (field1, field2, …) VALUES (data1, data2, …);

UPDATE table_name SET field1=data1, … WHERE condition;

DELETE FROM table_name WHERE condition;

 

클래스 생성을 완료했으면 프로그램 실행 시에 자동으로 DB에 접속하도록 다음과 같이 코드를 작성했습니다.

fMain 클래스에서 전역 변수로 DB 연결을 위한 객체를 생성해주고, fMain_Load 이벤트에서 DB 연결 함수를 호출해줍니다.

 

DBMySql _db = new DBMySql();

 

private void fMain_Load(object sender, EventArgs e)

{

     _db.Connection();

}

 

연결에 문제가 있다면 Connection 함수에서 메시지 박스로 Exception 내용을 보이도록 했기 때문에

확인해서 문제 해결을 하면 됩니다.

예를 들어 User ID를 잘못 입력했을 때,다음과 같은 에러가 뜨며 Access dinied for user 'user12'라는 문장을 참고하여 아이디와 패스워드를 정확하게 입력하여 재접속합니다.

MySqlExcption (0x80004005) : Authentication to host 'localhost' for use 'user12' …


그러면 여기까지 DAY1. Database 설정 및 연결이 끝났습니다!

데이터베이스 생성, 사용자 생성, 권한 부여, 테이블 생성, 테이블 조회 등등을 이용해 DB를 다뤄보았고,

C#을 이용해서 DB(Mysql) 연결까지 해보았습니다.

사실, 가계부 프로그램을 위한 데이터베이스 사용은 이 정도면 거의 다 했다고 보면 됩니다 ㅎㅎ

굉장히 간단하쥬? ^^

그럼 다음 시간에는 가계부 사용을 위한 설정으로 돌아오겠습니다!

 

BYE!

728x90
반응형