Database 매뉴얼 · Chapter 2

title: "DB 연결 등록 — Database Connection 화면" chapter: 2 images:

  • database-connection-page.png

DB 연결 등록

스크립트에서 사용할 연결 이름파일 경로 / 연결 문자열 을 등록하는 단계입니다. 이 단계가 끝나면 그 이후 모든 코드는 X.DB["local"] 한 줄로 이 데이터베이스에 접근합니다.

Database Connection 화면 예시

화면 진입 경로

Solution Explorer
└── Data Editor Pages
    └── Database
        └── Database Connections   ← 이 화면

처음 들어가면 빈 목록이 표시됩니다. 우측 상단의 [+ Add] 로 한 줄 추가하고, 아래 항목을 채웁니다.

입력 항목

항목설명
Name연결 식별자. 스크립트에서 X.DB["<이 이름>"] 으로 접근. 영문 소문자 권장
Typesqlite 또는 mssql
Path / ConnectionStringSQLite : 파일 경로 (비우면 자동) / MSSQL : 표준 ADO.NET 연결 문자열
Backup FolderBackup() 호출 시 기본 저장 위치
Auto Backup자동 백업 사용 여부 / 주기

Path 를 비워두면

SQLite 의 경우 <프로젝트 루트>\XDatabase\<Name>.db 로 자동 결정됩니다. 권장 값은 비워두는 쪽입니다 — 프로젝트와 함께 이동하므로 PC 가 바뀌어도 그대로 동작합니다.

등록 예시

가장 일반적인 SQLite 한 개짜리 구성:

Name              :  local
Type              :  sqlite
Path              :  (비워둠)   →  XDatabase\local.db 자동 생성
Backup Folder     :  XDatabase\Backup
Auto Backup       :  Off

원격 MSSQL 도 같은 화면에서 추가할 수 있습니다:

Name              :  mes
Type              :  mssql
ConnectionString  :  Server=192.168.0.10;Database=MES;User Id=sa;Password=...
Backup Folder     :  (사용 안 함)
Auto Backup       :  Off

스크립트 측에서는 동일한 패턴으로 골라 씁니다.

X.DB["local"].RunSqlSelect("...");   // 로컬 SQLite
X.DB["mes"].RunSqlSelect("...");     // 원격 MSSQL

저장 후 자동 등록

[Save] → 프로젝트를 다시 열면 부팅 시점에 XDatabaseManager.Register(...) 가 자동으로 호출됩니다. 부팅 로그에서 다음 줄이 보이면 정상입니다.

[XDatabaseManager] Register : name='local', type='sqlite'

이 시점부터 모든 모듈에서 X.DB["local"] 로 접근 가능합니다.

어디에 무엇이 저장되나

<프로젝트 루트>
└── XDatabase
    ├── XDatabaseOption.json    ← 등록한 연결 목록 ( 화면이 편집)
    ├── local.db                ← Name=local 인 SQLite 파일 (자동 생성)
    └── Backup/                 ← Backup() / StartBackupThread() 결과물

XDatabaseOption.json 은 사람이 직접 편집할 수도 있지만, 반드시 이 화면을 거치는 것을 권장합니다. 연결 문자열의 비밀번호는 DPAPI 로 암호화되어 저장됩니다 — 직접 편집 시 평문이 들어가면 보안 사고로 이어집니다.

체크포인트

이 단계가 끝났다고 판단하는 기준입니다.

  1. 부팅 로그에 Register : name='local', type='sqlite' 가 보인다.
  2. 프로젝트 폴더에 XDatabase\local.db 파일이 자동 생성되었다.
  3. 스크립트 한 줄 테스트로 연결이 살아있다.
FUNCTION TestDbAlive()
{
   if( X.DB["local"] == null )
   {
      LogError($"X.DB[\"local\"] is null - check Database Connection");
      return false;
   }
 
   if( X.DB["local"].IsOpen == false )
   {
      X.DB["local"].Open();
   }
 
   Log($"DB OK : isOpen={X.DB[\"local\"].IsOpen}");
   return true;
}

세 가지가 모두 확인되면 다음 장으로 넘어갑니다.

자주 묻는 질문

Q. Path 를 비워두지 않고 절대 경로를 넣어도 되나요? 가능합니다. 다만 프로젝트를 다른 PC 로 옮기면 그 경로가 존재해야 합니다. 공유 드라이브에 두고 여러 장비가 같은 파일에 동시 쓰면 SQLite 잠금 경합으로 느려집니다 — 권장하지 않습니다.

Q. 같은 Name 을 두 번 등록하면? 나중 등록이 우선합니다. 이전 연결은 자동으로 닫히고 교체됩니다 (XDatabaseManager.Register 동작).

Q. MSSQL 비밀번호가 평문으로 저장되나요? 아닙니다. XDatabaseOption.json 안에서 DPAPI 로 암호화됩니다. 단, 같은 Windows 사용자 계정에서만 복호화 되므로 운영 PC 와 빌드 PC 의 사용자 계정이 다르면 비밀번호를 다시 입력해야 합니다.

다음 단계

3장 — 스키마 적용 (빌트인 템플릿)