title: "DB 연결 등록 — Database Connection 화면" chapter: 2 images:
- database-connection-page.png
DB 연결 등록
스크립트에서 사용할 연결 이름 과 파일 경로 / 연결 문자열 을 등록하는 단계입니다.
이 단계가 끝나면 그 이후 모든 코드는 X.DB["local"] 한 줄로 이 데이터베이스에 접근합니다.
public/manual/gui/database-connection-page.png화면 진입 경로
Solution Explorer
└── Data Editor Pages
└── Database
└── Database Connections ← 이 화면처음 들어가면 빈 목록이 표시됩니다. 우측 상단의 [+ Add] 로 한 줄 추가하고, 아래 항목을 채웁니다.
입력 항목
| 항목 | 설명 |
|---|---|
| Name | 연결 식별자. 스크립트에서 X.DB["<이 이름>"] 으로 접근. 영문 소문자 권장 |
| Type | sqlite 또는 mssql |
| Path / ConnectionString | SQLite : 파일 경로 (비우면 자동) / MSSQL : 표준 ADO.NET 연결 문자열 |
| Backup Folder | Backup() 호출 시 기본 저장 위치 |
| 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 로 암호화되어 저장됩니다 — 직접 편집 시 평문이 들어가면 보안 사고로 이어집니다.
체크포인트
이 단계가 끝났다고 판단하는 기준입니다.
- 부팅 로그에
Register : name='local', type='sqlite'가 보인다. - 프로젝트 폴더에
XDatabase\local.db파일이 자동 생성되었다. - 스크립트 한 줄 테스트로 연결이 살아있다.
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 의 사용자 계정이 다르면 비밀번호를 다시 입력해야 합니다.