MsiOpenDatabaseA 函数 (msiquery.h)
MsiOpenDatabase 函数将打开数据库文件以进行数据访问。 此函数返回应使用 MsiCloseHandle关闭的句柄。
语法
UINT MsiOpenDatabaseA(
[in] LPCSTR szDatabasePath,
[in] LPCSTR szPersist,
[out] MSIHANDLE *phDatabase
);
参数
[in] szDatabasePath
指定数据库文件的完整路径或相对路径。
[in] szPersist
接收文件或持久性模式的完整路径。 可以使用 szPersist 参数将持久性输出定向到新文件或指定以下预定义持久性模式之一。
[out] phDatabase
指向返回的数据库句柄的位置的指针。
返回值
MsiOpenDatabase 函数返回以下值:
言论
若要对数据库进行更改,请先在事务(MSIDBOPEN_TRANSACT)、创建(MSIDBOPEN_CREATE或MSIDBOPEN_CREATEDIRECT)或直接(MSIDBOPEN_DIRECT)模式下打开数据库。 进行更改后,在关闭数据库句柄之前,请始终调用 MsiDatabaseCommit。 MsiDatabaseCommit 刷新所有缓冲区。
在关闭数据库的句柄之前,请始终在直接模式(MSIDBOPEN_DIRECT或MSIDBOPEN_CREATEDIRECT)中打开的数据库调用 MsiDatabaseCommit。 未能执行此操作可能会损坏数据库。
由于 MsiOpenDatabase 启动数据库访问,因此它不能用于正在运行的安装。
请注意,建议使用 PMSIHANDLE 类型的变量,因为安装程序关闭 PMSIHANDLE 对象,因为它们超出范围,而必须通过调用 MsiCloseHandle来关闭 MSIHANDLE 对象。 有关详细信息,请参阅 Windows Installer 最佳做法中的 使用 PMSIHANDLE 而不是 HANDLE 部分。
注意
msiquery.h 标头将 MsiOpenDatabase 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 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 |
目标平台 | 窗户 |
标头 | msiquery.h |
库 | Msi.lib |
DLL | Msi.dll |