다음을 통해 공유


MsiOpenDatabaseA 함수(msiquery.h)

MsiOpenDatabase 함수는 데이터 액세스를 위한 데이터베이스 파일을 엽니다. 이 함수는 MsiCloseHandle을 사용하여 닫아야 하는 핸들을 반환합니다.

구문

UINT MsiOpenDatabaseA(
  [in]  LPCSTR    szDatabasePath,
  [in]  LPCSTR    szPersist,
  [out] MSIHANDLE *phDatabase
);

매개 변수

[in] szDatabasePath

데이터베이스 파일의 전체 경로 또는 상대 경로를 지정합니다.

[in] szPersist

파일 또는 지속성 모드의 전체 경로를 받습니다. szPersist 매개 변수를 사용하여 영구 출력을 새 파일로 보내거나 다음과 같은 미리 정의된 지속성 모드 중 하나를 지정할 수 있습니다.

의미
MSIDBOPEN_CREATEDIRECT
새 데이터베이스, 직접 모드 읽기/쓰기를 만듭니다.
MSIDBOPEN_CREATE
새 데이터베이스, 거래 모드 읽기/쓰기를 만듭니다.
MSIDBOPEN_DIRECT
트랜잭션 없이 데이터베이스 직접 읽기/쓰기를 엽니다.
MSIDBOPEN_READONLY
영구 변경 없이 데이터베이스 읽기 전용을 엽니다.
MSIDBOPEN_TRANSACT
트랜잭션 모드에서 데이터베이스 읽기/쓰기를 엽니다.
MSIDBOPEN_PATCHFILE
패치 파일을 나타내려면 이 플래그를 추가합니다.

[out] phDatabase

반환된 데이터베이스 핸들의 위치에 대한 포인터입니다.

반환 값

MsiOpenDatabase 함수는 다음 값을 반환합니다.

설명

데이터베이스를 변경하고 저장하려면 먼저 트랜잭션(MSIDBOPEN_TRANSACT), 만들기(MSIDBOPEN_CREATE 또는 MSIDBOPEN_CREATEDIRECT) 또는 직접(MSIDBOPEN_DIRECT) 모드에서 데이터베이스를 엽니다. 변경한 후 데이터베이스 핸들을 닫기 전에 항상 MsiDatabaseCommit 을 호출합니다. MsiDatabaseCommit 은 모든 버퍼를 플러시합니다.

데이터베이스의 핸들을 닫기 전에 항상 직접 모드(MSIDBOPEN_DIRECT 또는 MSIDBOPEN_CREATEDIRECT)로 열린 데이터베이스에서 MsiDatabaseCommit 을 호출합니다. 이렇게 하지 않으면 데이터베이스가 손상될 수 있습니다.

MsiOpenDatabase는 데이터베이스 액세스를 시작하므로 실행 중인 설치와 함께 사용할 수 없습니다.

설치 관리자가 SCOPE 나가는 동안 PMSIHANDLE 개체를 닫고 MsiCloseHandle을 호출하여 MSIHANDLE 개체를 닫아야 하므로 PMSIHANDLE 형식의 변수를 사용하는 것이 좋습니다. 자세한 내용은 Windows Installer 모범 사례HANDLE 대신 PMSIHANDLE 사용 섹션을 참조하세요.

참고 데이터베이스를 다른 데이터베이스의 출력으로 열면 출력 데이터베이스의 요약 정보 스트림은 실제로 원래 데이터베이스의 읽기 전용 미러 있으므로 변경할 수 없습니다. 또한 데이터베이스와 함께 유지되지 않습니다. 출력 데이터베이스에 대한 요약 정보를 만들거나 수정하려면 닫고 다시 열어야 합니다.
 
함수가 실패하면 MsiGetLastErrorRecord를 사용하여 확장된 오류 정보를 얻을 수 있습니다.

참고

msiquery.h 헤더는 MSiOpenDatabase를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Server 2012, Windows 8, Windows Server 2008 R2 또는 Windows 7의 Windows Installer 5.0. Windows Server 2008 또는 Windows Vista의 Windows Installer 4.0 또는 Windows Installer 4.5. Windows Server 2003 또는 Windows XP의 Windows Installer
대상 플랫폼 Windows
헤더 msiquery.h
라이브러리 Msi.lib
DLL Msi.dll

추가 정보

데이터베이스 및 패치 예제

일반 데이터베이스 액세스 함수