SQL Query (ISqlQuery)

Overview

An SQL Query represents a block of SQL statements that are executed against a database connection during install, uninstall, or maintenance operations. Queries can be defined inline as text or linked to an external SQL script file. They are processed as part of a connection (Custom, Predefined, or SQLite) and executed at runtime by Advanced Installer.

The query interface allows you to configure error handling, specify statement separators (such as ; for SQLite or GO for SQL Server), strip comments, and parameterize SQL using installer properties or token replacements.

Isqldatabasescomponent isqlquery

Methods

  • AddDataBindingProperty (string propertyName) Adds a Windows Installer property name that can be substituted at runtime (parameterization).
  • RemoveDataBindingProperty (string propertyName) Removes a previously added data-binding property.
  • NewScriptReplacement (string token, string value) → ISqlScriptReplacement Creates a script replacement entry that substitutes token with value before execution. Returns the created ISqlScriptReplacement.
  • DeleteScriptReplacement (ISqlScriptReplacement replacement) Deletes the specified ISqlScriptReplacement from this query.

Properties

  • Name (string) {get}{set} Gets or sets the display name of the query.
  • Connection (Variant) {get}{set} Gets or sets the connection this query runs against (ISqlCustomConnection, ISqlPredefinedConnection, or ISqliteConnection).
  • InlineScript (string) {get}{set} Gets or sets the inline SQL text to execute.
  • ScriptFile (string) {get}{set} Gets or sets the path to an external SQL script file to execute (project-relative or absolute path).
  • StatementSeparator (string) {get}{set} Gets or sets the separator used to split the script into individual statements (e.g., ; or GO).
  • StripComments (bool) {get}{set} When true, removes SQL comments before execution.
  • AbortInstallationOnError (bool) {get}{set} When true, aborts the installation if this query fails.
  • DataBindingProperties (SAFEARRAY(string)) {get} Returns the collection of data-binding property names for this query.
  • ScriptReplacements (SAFEARRAY(Variant)) {get} Returns the collection of ISqlScriptReplacement entries defined for this query.

Sample commands

# ISqliteConnection usage for ISqlQuery

$advinst  = New-Object -ComObject "AdvancedInstaller"
$project  = $advinst.CreateProject($advinst.ProjectTypes.Enterprise)

# Create a SQLite connection (required before adding queries)
$sqlite = $project.SqlDatabasesComponent.NewSQLiteConnection("SQLite Query Sample")
$sqlite.DatabaseFile = "[APPDIR]\data\app.db"
$sqlite.CreateDatabaseIfNotExists = $true
$sqlite.Use64bitOdbcResource = $true
$sqlite.LoginTimeout = 30
$sqlite.IsVerbose = $true
$sqlite.LogErrorsToFile = $true

# Add an inline query
$q = $sqlite.NewQuery("Create Demo Table")
$q.StatementSeparator = ";"
$q.InlineScript = @"
CREATE TABLE demo (
  id   INTEGER PRIMARY KEY,
  name TEXT NOT NULL
);
"@

# Add a query from an external SQL file
$queryFromFile = $sqlite.NewQuery("Sample Query from file")
$queryFromFile.ScriptFile = "F:\cmdlet\res\demo-sql-script.sql"
$queryFromFile.StatementSeparator = ";"
$queryFromFile.AbortInstallationOnError = $true

# Add script replacements to substitute tokens in the SQL file
$queryFromFile.NewScriptReplacement("DB_NAME", "DemoDB")
$rep = $queryFromFile.NewScriptReplacement("TABLE_NAME", "DemoTable")

# Remove a script replacement (optional)
# $queryFromFile.DeleteScriptReplacement($rep)

# List queries
$sqlite.Queries

# Delete a query (optional cleanup)
# $sqlite.DeleteQuery($q)

# Remove the connection (optional cleanup)
# $project.SqlDatabasesComponent.DeleteDatabaseObject($sqlite)

$project.SaveAs("F:\cmdlet\output\SQLite Query Sample.aip")

See also