사용자 도구

사이트 도구


product:povice:framework:query

데이터베이스 통합 쿼리

RDB 데이터베이스는 모두 DbClient 클래스를 사용하여 쿼리문을 실행할 수 있습니다. 데이터베이스 종류별로 클라이언트를 직접 참조할 필요가 없고 사용 방법이 일관적이기 때문에 개발 편의성과 생산성을 높일 수 있습니다. 쿼리 결과를 DataList<T> 컬렉션으로 받아올 수 있으므로 데이터 처리에도 용이합니다.
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<dynamic>();

위 쿼리의 결과로 DataList<dynamic> 컬렉션이 리턴 되고 멤버(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
});
product/povice/framework/query.txt · 마지막으로 수정됨: 2022-11-15 15:20 저자 shincs