Fungsi MsiOpenDatabaseA (msiquery.h)

Fungsi MsiOpenDatabase membuka file database untuk akses data. Fungsi ini mengembalikan handel yang harus ditutup menggunakan MsiCloseHandle.

Sintaks

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

Parameter

[in] szDatabasePath

Menentukan jalur lengkap atau jalur relatif ke file database.

[in] szPersist

Menerima jalur lengkap ke file atau mode persistensi. Anda dapat menggunakan parameter szPersist untuk mengarahkan output persisten ke file baru atau untuk menentukan salah satu mode persistensi yang telah ditentukan sebelumnya berikut.

Nilai Makna
MSIDBOPEN_CREATEDIRECT
Buat database baru, mode langsung baca/tulis.
MSIDBOPEN_CREATE
Buat database baru, mode bertransaksi baca/tulis.
MSIDBOPEN_DIRECT
Buka database langsung baca/tulis tanpa transaksi.
MSIDBOPEN_READONLY
Buka database baca-saja, tidak ada perubahan persisten.
MSIDBOPEN_TRANSACT
Buka database baca/tulis dalam mode transaksi.
MSIDBOPEN_PATCHFILE
Tambahkan bendera ini untuk menunjukkan file patch.

[out] phDatabase

Penunjuk ke lokasi handel database yang dikembalikan.

Mengembalikan nilai

Fungsi MsiOpenDatabase mengembalikan nilai berikut:

Keterangan

Untuk membuat dan menyimpan perubahan ke database, pertama-tama buka database dalam mode transaksi (MSIDBOPEN_TRANSACT), buat (MSIDBOPEN_CREATE atau MSIDBOPEN_CREATEDIRECT), atau langsung (MSIDBOPEN_DIRECT). Setelah membuat perubahan, selalu panggil MsiDatabaseCommit sebelum menutup handel database. MsiDatabaseCommit membersihkan semua buffer.

Selalu panggil MsiDatabaseCommit pada database yang telah dibuka dalam mode langsung (MSIDBOPEN_DIRECT atau MSIDBOPEN_CREATEDIRECT) sebelum menutup handel database. Kegagalan untuk melakukan ini mungkin merusak database.

Karena MsiOpenDatabase memulai akses database, MsiOpenDatabase tidak dapat digunakan dengan penginstalan yang sedang berjalan.

Perhatikan bahwa disarankan untuk menggunakan variabel jenis PMSIHANDLE karena alat penginstal menutup objek PMSIHANDLE saat keluar dari cakupan, sedangkan Anda harus menutup objek MSIHANDLE dengan memanggil MsiCloseHandle. Untuk informasi selengkapnya lihat Menggunakan PMSIHANDLE alih-alih bagian HANDLE di Praktik Terbaik Penginstal Windows.

Catatan Ketika database dibuka sebagai output database lain, aliran informasi ringkasan database output sebenarnya adalah cermin baca-saja dari database asli, dan, dengan demikian, tidak dapat diubah. Selain itu, database tidak bertahan dengan database. Untuk membuat atau mengubah informasi ringkasan untuk database output, itu harus ditutup dan dibuka kembali.
 
Jika fungsi gagal, Anda dapat memperoleh informasi kesalahan yang diperluas dengan menggunakan MsiGetLastErrorRecord.

Catatan

Header msiquery.h mendefinisikan MsiOpenDatabase sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Installer 5.0 di Windows Server 2012, Windows 8, Windows Server 2008 R2 atau Windows 7. Windows Installer 4.0 atau Windows Installer 4.5 di Windows Server 2008 atau Windows Vista. Pemasang Windows pada Windows Server 2003 atau Windows XP
Target Platform Windows
Header msiquery.h
Pustaka Msi.lib
DLL Msi.dll

Lihat juga

Contoh Database dan Patch

Fungsi Akses Database Umum