====== 데이터베이스 통합 쿼리 ====== RDB 데이터베이스는 모두 ''DbClient'' 클래스를 사용하여 쿼리문을 실행할 수 있습니다. 데이터베이스 종류별로 클라이언트를 직접 참조할 필요가 없고 사용 방법이 일관적이기 때문에 개발 편의성과 생산성을 높일 수 있습니다. 쿼리 결과를 ''DataList'' 컬렉션으로 받아올 수 있으므로 데이터 처리에도 용이합니다.\\ DbClient는 ORM(Object-Relational Mapping, 개체-관계 매핑)을 지원하고 다음과 같은 특징이 있습니다. * RDB에서 테이블 구조를 개체 구조로 변환합니다. * 테이블에 있는 값이 생성된 개체에 그대로 설정됩니다. * 만들어진 개체들은 각종 UI 컨트롤에서 보여줄 수 있습니다. * dynamic 키워드를 사용하면 개체에 멤버를 추가하거나 삭제할 수 있는 별도의 기능을 제공합니다. ===== DbClient ===== DbClient의 기본 사용방법은 다음과 같습니다. var dbClient = new DbClient(DbProviderType.SQLite, "Data Source = test.db;" + " Version = 3; DateTimeFormat = CurrentCulture; Synchronous = Off"); dbClient.CommandText = "SELECT* FROM TableName"; var dataList = dbClient.Execute(); 위 쿼리의 결과로 DataList 컬렉션이 리턴 되고 멤버(Member) 구성이 자동으로 생성됩니다. dynamic 대신에 특정 T 타입을 지정할 수 있으며 T 타입을 지정할 경우 데이터베이스 테이블의 컬럼과 타입 멤버의 이름이 일치하는 정보에 대해서만 데이터를 채워줍니다. **단, 이름이 일치하는 정보 중 컬럼의 형식과 타입의 멤버 형식이 동일해야 합니다.** 다르면, 예외가 발생합니다. ===== 연결 정보 관리 ===== 데이터베이스에 연결하려면 연결 문자열이 필요하며 연결 문자열을 Config 파일로 관리하거나 코드로 정의하는 방법이 있습니다. ==== json 파일로 관리하기 ==== Config 파일은 ''Config.DbConnectionSettingsFileName'' 에 json 파일 이름을 정의하고 있으며, 이 json 파일을 편집하여 연결 정보를 관리할 수 있습니다. 그리고, Config 파일이 존재하는 기본 디렉토리 경로는 ''Config.ConfigDirectoryPath'' 에서 정의합니다. 기본 디렉토리 경로는 실행 파일이 존재하는 하위 “Config” 디렉토리입니다. json 파일 구조는 아래와 같습니다. { "Dev": [{ "Key": "SQLite", "Value": { "ConnectionString": "Data Source = test.db;Version = 3;DateTimeFormat = CurrentCulture;Synchronous = Off ", "ProviderType": 0 } }, { "Key": "Oracle", "Value": { "ConnectionString": "Data Source=192.168.1.33:1521/testdb;UserId = C # #povice;Password = povice ", "ProviderType": 1 } } ], "Real": [{ "Key": "SQLite", "Value": { "ConnectionString": "Data Source = test.db;Version = 3;DateTimeFormat = CurrentCulture;Synchronous = Off ", "ProviderType": 0 } }, { "Key": "Oracle", "Value": { "ConnectionString": "Data Source=192.168.1.33:1521/testdb;UserId = C # #povice;Password = povice ", "ProviderType": 1 } } ] } ==== 수동으로 연결 정보 추가 ==== 파일을 사용하지않고 아래와 같이 단순히 ''Config.DbConnectionSettings''에 접근하여 연결정보를 수동으로 추가할 수 있습니다. 추가할 때 개발(Dev)과 운영(Real)을 고려하여 추가합니다. 기본적으로 Dev 모드에서는 Dev 접근을 사용하고 Release 모드에서는 Real 접근을 사용합니다. Dev 모드 여부는 ''Config.DevMode''에서 설정합니다. // 개발 Config.DbConnectionSettings.Dev.Add("SQLite", new DbConnectionInfo { ConnectionString = "Data Source = test.db; Version = 3;" + " DateTimeFormat = CurrentCulture; Synchronous = Off", ProviderType = DbProviderType.SQLite }); // 운영 Config.DbConnectionSettings.Real.Add("SQLite", new DbConnectionInfo { ConnectionString = "Data Source = test.db; Version = 3;" + " DateTimeFormat = CurrentCulture; Synchronous = Off", ProviderType = DbProviderType.SQLite });