DISQLite3 - A self-contained, embeddable, zero-configuration SQL database engine for Delphi
DISQLite3 implements a self-contained, embeddable, zero-configuration SQL database engine for Delphi (Embarcadero / CodeGear / Borland).
Features include:
-
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.pas
is 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.
SQL-92 Support
DISQLite3 understands most of the SQL-92 language standard:
-
ALTER TABLE
-
ANALYZE
-
ATTACH DATABASE
-
BEGIN TRANSACTION
-
Comments
-
COMMIT TRANSACTION
-
CREATE INDEX
-
CREATE TABLE
-
CREATE TRIGGER
-
CREATE VIEW
-
DELETE
-
DETACH DATABASE
-
DROP INDEX
-
DROP TRIGGER
-
DROP VIEW
-
END TRANSACTION
-
EXPLAIN
-
Expressions
-
INSERT
-
ON CONFLICT clause
-
PRAGMA
-
REINDEX
-
REPLACE
-
ROLLBACK TRANSACTION
-
SELECT
-
UPDATE
-
VACUUM
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 ACIDtransactions, 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.
A feature chart is available for a side-by-side comparison of the two editions.
This table lists the features of the free1) DISQLite3 Personal vs. the commercial DISQLite3Pro editions.
Feature | DISQLite3 Personal | DISQLite3 Pro |
---|---|---|
Windows 64-bit support | Yes | |
SQL-92 Compatible Syntax | Yes | Yes |
Single File Database | Yes | Yes |
Compact, Variable-Length File Format | Yes | Yes |
Maximum Database Size | 2 TB | 2TB |
Maximum Number of Tables | Unlimited | Unlimited |
Maximum Number of Columns per Table | Unlimited | Unlimited |
Maximum Length of Column Name | Unlimited | Unlimited |
Maximum Number of Indexes | Unlimited | Unlimited |
Maximum Amount of Data per Row | Unlimited | Unlimited |
Compiles into Application EXE, requires no DLLs | Yes | Yes |
Indexed Full Text Search with prefix matching (like "run*") andoptional word stemming | Yes | Yes |
SQL Parameter Binding (?, :ParamName) | Yes | Yes |
Database Locking | Yes | Yes |
Database Transactions and Rollback | Yes | Yes |
Database Schema PRAGMAs | Yes | Yes |
Multiple, Simultaneous SELECT Operations | Yes | Yes |
Database Encryption | Single Password | Any Password |
CHECK constraints | Yes | |
SQL ANALYZE command | Yes | |
SQL OR optimization | Yes | |
SQL BETWEEN optimization | Yes | |
SQL LIKE optimization | Yes | |
SQL INSERT allows multiple rows | Yes | |
Default Column Values | Yes | Yes |
Floating-Point Support | Yes | Yes |
Date and DateTime Functions | Yes | Yes |
User-Defined Collation Sequences | Yes | |
User-Defined Database Functions and Aggregates | Yes | |
ALTER TABLE SQL Command | Yes | |
Authorization Callback Feature | Yes | |
PRIMARY KEY Columns | Yes | Yes |
Autoincementing PRIMARY KEY columns (may reuse ROWIDs from deleted records) | Yes | Yes |
AUTOINCREMENT keyword (monotonically increasing ROWIDs, guaranteed to be unique over the entire database lifetime) | Yes | |
VACUUM Clause, Auto-Vacuum Feature | Yes | |
BLOB Literal SQL Syntax X'ABCD' | Yes | |
Incremental BLOB API | Yes | |
CAST ( expr AS type ) | Yes | |
Temporary Tables | Yes | |
Compound SELECTs (UNION, UNION ALL, INTERSECT, EXCEPT) | Yes | |
ON CONFLICT SQL Clause | Yes | |
EXPLAIN SQL Clause | Yes | |
Database Integrity Check | Yes | |
FOREIGN KEY constraints | Yes | |
In-Memory Database | Yes | |
Hot Database Backup | Yes | |
Trace Callback Feature for SQL Logging and Debugging | Yes | |
Commit Transaction Callback Feature | Yes | |
Progress Callback Feature | Yes | |
REINDEX SQL Clause | Yes | |
PRAGMA Database Options | Yes | |
Sub-Queries, Sub-Selects, IN() Operator | Yes | |
Automatic Database Triggers | Yes | |
UTF-8 / Utf8String API | Yes | Yes |
UTF-16 / UnicodeString / WideString API | Yes | |
Views, Triggers on Views | Yes | |
ATTACH multiple databases | Yes | |
SQL tracing and performance profiling | Yes | |
Shared Cache between multiple open DB connections | Yes | |
Asynchronous I/O background thread writing | Yes | |
R-Tree index for geospatial data systems | Yes | |
Write-Ahead Logging (WAL) for improved performance and concurrency | Yes | |
Multiple worker threads | Yes |