[C++ / DB] ORM
·
Study/C++ & C#
자체적인 ORM을 작성해 보기로 했었다. 이제 필요한 것은 실행 시 XML 파일과 실제 DB를 비교하고 동기화하는 것이다. 1. 클래스 작성 양이 많아서 일부만 옮긴다. A. ConsoleLog 먼저 콘솔에 로그를 더 효율적으로 찍기 위한 클래스를 작성한다. // ConsoleLog.h #pragma once enum class Color { BLACK, WHITE, RED, GREEN, BLUE, YELLOW, }; class ConsoleLog { enum { BUFFER_SIZE = 4096 }; public: ConsoleLog(); ~ConsoleLog(); public: voidWriteStdOut(Color color, const WCHAR* str, ...); voidWriteStdErr(..
[C++ / DB] XML Parser
·
Study/C++ & C#
게임에만 버전이 있는 것이 아니라 DB에도 버전이 있다. 따라서 게임 버전에 DB 버전을 매칭시킬 필요가 있다. 예를 들어서 게임에서 A와 B라는 테이블이 있었는데, 업데이트로 인해 C, D 테이블을 새로 활용하게 됐다. 하지만 DB는 여전히 A와 B, 2개의 테이블만 갖고 있다고 한다면 문제가 생길 수밖에 없을 것이다. 이런 과정을 자동화 할 수 있는 도구를 「Object Relational Mapping (ORM)」이라고 한다. 자체적으로 비교적 단순한 ORM을 만들어 볼 것이다. 엄밀히 말하면 도구라기 보단 방법에 가깝지만 ORM Tool이라고 생각하자. 1. 밑작업 XML과 파일 입출력을 사용할 것이다. 따라서 XML 파서 및 파일 입출력용 함수를 준비할 필요가 있다. XML 파싱을 위해 Rapi..
[C++ / DB] DBBind
·
Study/C++ & C#
저번 시간의 불편함을 어느 정도 해소해 보자. 1. BindParam/Col 요주의 함수. 원래 있던건 private로 돌려서 내부에서 사용하기로 하고, public으로 새로 만들 어떤 자료형이든 받을 수 있게 함수를 쫙 작성하기로 하자. 새로 작성할 함수들은 얘네들이다. public: boolBindParam(int32 paramIndex, bool* value, SQLLEN* index); boolBindParam(int32 paramIndex, float* value, SQLLEN* index); boolBindParam(int32 paramIndex, double* value, SQLLEN* index); boolBindParam(int32 paramIndex, int8* value, SQLLEN..
[C++ / DB] DBConnection
·
Study/C++ & C#
올 것이 왔다는 느낌. 학교에서 서블릿으로 DB를 배울 때가 생각난다. 자바가 싫어서 그렇게 열심히는 안 했던 것 같지만, 이번엔 자바가 아니니까 좀 열심히 해보기로 했다. 1. 클래스 작성 역시 일꾼을 만드는 것부터 시작한다. A. DBConnectionPool 이름에서 느껴지는 이 녀석의 역할. 커넥션을 만들어 뒀다가 두고두고 쓰기 위한 저장용 풀이다. 아래와 같이 만들어 볼 수 있겠다. #pragma once #include "DBConnection.h" // 재사용 하기 위한 풀 class DBConnectionPool { public: DBConnectionPool(); ~DBConnectionPool(); boolConnect(int32 connectionCount, const WCHAR* c..