A3SQL 1.1.1 — CBA integration, runtime engine, apply functions

A3SQL Documentation
  • Home
  • Getting Started
  • SQL
  • Runtime Engine
  • Networking

A3SQL

An embeddable SQL database engine for Arma 3

  • In-memory SQLite with full dialect support, running inside the Arma 3 process.
  • Execute SQL from SQF with a3sql_fnc_execute. Parameterised queries, prepared statements, and result parsing built in.
  • Persistence, live patching, analytics, and remote admin — all driven by SQL.

Getting Started

SQL Dialect

Runtime Engine

SQL Engine

Full SQLite dialect: JOINs, window functions, triggers, CTEs, transactions. Parameterised queries and prepared statements built in.

SQL Dialect »

Runtime Engine

DB-driven, event-driven overrides applied live from runtime_overrides. Damage, velocity, weather, AI skills — any mod can hook in.

Runtime Engine »

Persistence

Player stats, loadouts, and mission state survive server restarts. Auto-save, transactions, and atomic file writes.

Getting Started »

Live Patching

Change weapon stats, vehicle properties, and runtime values mid-mission from SQL rules — no mission restart.

Patch Framework »

Remote Admin

Manage the server from outside the game over the TCP listener. Query, administer, and automate with any SQL client.

TCP Connector »

Security

Fail-closed authentication, constant-time credential comparison, sandboxed file paths, and injection-safe parameterised queries.

Security »

Get Started

Source Code
---
pagetitle: "A3SQL"
page-layout: custom
section-divs: false
toc: false
css: index.css
editor: source
description: |
  An embeddable SQL database engine and management framework for Arma 3.
hide-description: true
---

::: {.hero-banner}
::: {.content-block .py-4}
::: {.hero-text}
# A3SQL

### An embeddable SQL database engine for Arma 3

- In-memory SQLite with full dialect support, running inside the Arma 3 process.
- Execute SQL from SQF with `a3sql_fnc_execute`. Parameterised queries, prepared statements, and result parsing built in.
- Persistence, live patching, analytics, and remote admin — all driven by SQL.

::: {.grid .gap-3 .pb-3 .pt-4}
::: {.g-col-12 .g-col-sm-4}
[Getting Started](chapters/Getting-Started.qmd){.btn-action-primary .btn-action .btn .btn-lg .w-100 role="button"}
:::
::: {.g-col-12 .g-col-sm-4 .mb-2}
[SQL Dialect](chapters/SQL-Dialect.qmd){.btn-action .btn-secondary .btn .btn-lg .w-100 role="button"}
:::
::: {.g-col-12 .g-col-sm-4 .mb-2}
[Runtime Engine](chapters/Runtime-Engine.qmd){.btn-action .btn-secondary .btn .btn-lg .w-100 role="button"}
:::
:::
:::
:::
:::

::: {.alt-background}
::: {.content-block .py-4}
::: {.features}

::: {.feature}
### SQL Engine
Full SQLite dialect: JOINs, window functions, triggers, CTEs, transactions. Parameterised queries and prepared statements built in.

::: {.learn-more}
[SQL Dialect »](chapters/SQL-Dialect.qmd)
:::
:::

::: {.feature}
### Runtime Engine
DB-driven, event-driven overrides applied live from `runtime_overrides`. Damage, velocity, weather, AI skills — any mod can hook in.

::: {.learn-more}
[Runtime Engine »](chapters/Runtime-Engine.qmd)
:::
:::

::: {.feature}
### Persistence
Player stats, loadouts, and mission state survive server restarts. Auto-save, transactions, and atomic file writes.

::: {.learn-more}
[Getting Started »](chapters/Getting-Started.qmd)
:::
:::

::: {.feature}
### Live Patching
Change weapon stats, vehicle properties, and runtime values mid-mission from SQL rules — no mission restart.

::: {.learn-more}
[Patch Framework »](chapters/Patch-Framework.qmd)
:::
:::

::: {.feature}
### Remote Admin
Manage the server from outside the game over the TCP listener. Query, administer, and automate with any SQL client.

::: {.learn-more}
[TCP Connector »](chapters/TCP-Connector.qmd)
:::
:::

::: {.feature}
### Security
Fail-closed authentication, constant-time credential comparison, sandboxed file paths, and injection-safe parameterised queries.

::: {.learn-more}
[Security »](chapters/Security.qmd)
:::
:::

:::
:::
:::

::: {.get-started}
::: {.content-block .py-5}
[Get Started](chapters/Getting-Started.qmd){.btn-action-primary .btn-action .btn .btn-lg role="button"}
:::
:::
  • Edit this page
  • Report an issue