在 sql 中对 WindowsInstaller msi 数据库查询是否有任何限制

los*_*der 2 c# mysql sql-server windows-installer

我正在尝试在 c# 中的 msi 数据库上运行一些 sql 查询。但似乎某些特定的 sql 查询不起作用。

WindowsInstaller.Installer ins = (WindowsInstaller.Installer)new Installer();
string strFileMsi = @"abc.msi";
Database db3 = ins.OpenDatabase(strFileMsi, WindowsInstaller.MsiOpenDatabaseMode.msiOpenDatabaseModeDirect);

string q = "SELECT File FROM File WHERE FileName LIKE '%s%'";
WindowsInstaller.View vw = db3.OpenView(q);
vw.Execute(null);
string q2="SELECT * FROM InstalExecuteSequece ORDER BY Sequence DESC"

WindowsInstaller.View vw2 = db.OpenView(q2);
vw.Execute(null);
Run Code Online (Sandbox Code Playgroud)

如果我没有运行相同的查询DESC关键字和所有,它的工作原理fine.Similarly是与本案LIKE KEYWORD also.All这些给SQL异常。

Mic*_*man 5

Windows Installer 实现了SQL 语法中描述的SQL子集。在该子集中有几个限制,包括我将在此处强调的三个限制:

  • 不支持DESCor LIKE,并且ORDER BY可能无法按照您的预期处理字符串
  • 更新查询不能修改主键列中的值
  • 无法'在 SQL 查询中转义撇号字符。如果您需要匹配像 那样的字符串值'It's',则必须?在查询中使用问号占位符并将包含该值的记录传递给view.Execute(record)