DISQLite3 implements a self-contained, embeddable, zero-configuration SQL database engine for Delphi (Embarcadero / CodeGear / Borland).
- ACID transactions, even after system crashes and power failures.
- Zero-configuration – no setup or administration needed.
- Implements most of SQL-92.
- A complete database is stored in a single disk file.
- Supports terabyte-sized databases and gigabyte-sized strings and blobs. Self-contained: no external dependencies, no DLLs.
- Small footprint and smart linking: Only required code is compiled in, adding as little as 300 KB code space only.
- Full Text Search (FTS) with customizable tokenizer, prefix matching, and optional word stemming for 15 languages.
- Database AES encryption with SHA256 key generator.
Db.pasis not required, which allows DISQLite3 to compile with all flavours of Delphi, including Delphi Standard and Delphi Personal.
- Faster than popular database engines for most common operations.
- Simple, easy to use API.
- Database files created with DISQLite3 can also be accessed by Linux and MacOS using the SQLite3 libraries.
DISQLite3 understands most of the SQL-92 language standard:
- ALTER TABLE
- ATTACH DATABASE
- BEGIN TRANSACTION
- COMMIT TRANSACTION
- CREATE INDEX
- CREATE TABLE
- CREATE TRIGGER
- CREATE VIEW
- DETACH DATABASE
- DROP INDEX
- DROP TABLE
- DROP TRIGGER
- DROP VIEW
- END TRANSACTION
- ON CONFLICT clause
- ROLLBACK TRANSACTION
The complete SQL syntax is described in full length in the DISQLite3 HTML Help, part of the installation package.
Simple Programming Interface
DISQLite3 provides a comprehensive list of functions and procedures to manage database records with ease and efficiency. It includes the full SQLite3 functionality, plus a number of Delphi specific extras:
- AnsiString, UnicodeString / WideString, and Variant support.
- Database and Statement wrapper classes.
- TDataSet support.
- TStream support for BLOBs.
- Growing number of Delphi example projects.
Despite of its rich set of features, a DISQLite3 database application can be realized with just three different function calls.
Pro and Personal Editions
DISQLite3 comes in two editions: DISQLite3 Personal and DISQLite3 Pro.
DISQLite3 Personal is free for personal, educational, and non-commercial use. It omits some functionality of DISQLite3 Pro, but does not compromize on essential features like ACID transactions, virtually unlimited database size, full text search, and others.
DISQLite3 Pro is required for commercial use and may be purchased online. It adds functionality usually desired by advanced users. This includes SQL triggers and views, arbitrary encryption passwords, user-defined SQL functions, and more. Since DISQLite3 Pro is fully compatible to the Personal edition, it is possible to upgrade existing projects without any code changes.
The feature chart is available for a side-by-side comparison of the two editions.
DISQLite3 5.19.0 – 3 Apr 2017
- Support Delphi 10.2 Tokyo Win32 and Win64.
- Added the PRAGMA optimize command.
- The SQLite version identifier returned by the sqlite_source_id() SQL function and the sqlite3_sourceid C API is now a 64-digit SHA3-256 hash instead of a 40-digit SHA1 hash.
- Added the json_patch() SQL function to the JSON1 extension.
- Enhance the LIKE optimization so that it works for arbitrary expressions on the left-hand side as long as the LIKE pattern on the right-hand side does not begin with a digit or minus sign.
- Added the sqlite3_set_last_insert_rowid interface and use the new interface in the FTS3, FTS4, and FTS5 extensions to ensure that the sqlite3_last_insert_rowid interface always returns reasonable values.
- Enhance PRAGMA integrity_check and PRAGMA quick_check so that they verify CHECK constraints.
- Enhance the query plans for joins to detect empty tables early and halt without doing unnecessary work. Enhance the sqlite3_mprintf family of interfaces and the printf SQL function to put comma separators at the thousands marks for integers, if the “,” format modifier is used in between the “%” and the “d” (example: “%,d”).
- Begin enforcing SQLITE_LIMIT_VDBE_OP. This can be used, for example, to prevent excessively large prepared statements in systems that accept SQL queries from untrusted users.
- Various performance improvements.
- Add the dbdump extension.
- Ensure that indexed expressions with collating sequences are handled correctly.
- Fix a bug in the 'start of …' modifiers for the date and time functions.
- Fix a potential segfault in complex recursive triggers.
- In the RBU extension, add extra sync operations to avoid the possibility of corruption following a power failure.
- The sqlite3_trace_v2 output for nested SQL statements should always begin with a “–” comment marker.