VCL Backend: Supported Database Systems
- 8 minutes to read
The VCL backend and data connection components support multiple relational database management systems (RDBMS). To connect your applications that are powered by ExpressReports or ExpressDashboards to a specified database, use the corresponding database provider assembly[1] with a TdxBackendDatabaseSQLConnection component.[2]
This topic lists all supported database engines (including database provider assemblies), corresponding XPO data storage adapters, and connection string examples. The topic subsections listed below are dedicated to individual database management systems and provide references to step-by-step instructions for how to use these databases as data sources in your app.
Microsoft SQL Server & Azure SQL
Microsoft SQL Server and Azure SQL Database are proprietary relational database management systems developed by Microsoft.
Tip
VCL Backend implementation has built-in support for Microsoft SQL, Azure SQL, and SQLite database engines.
You can use the TdxBackendDatabaseSQLConnection component to connect TdxDashboardControl and TdxReport components to these databases without additional dependencies and extra configuration.
Version | Database Provider Assemblies | NuGet Packages |
|---|---|---|
Microsoft SQL Server 7.0, 2000, 2005, 2008, 2012, 2014, 2016, 2019, 2022, 2025, SQL Azure™ | Microsoft.Data.SqlClient.dll 5.* |
Connection String Examples
Microsoft SQL Server
dxBackendDatabaseSQLConnection1.ConnectionString :=
'XpoProvider=MSSqlServer;' + // Specifies the database engine type
'Data Source=(local);' + // Specifies the database host
'User ID=username;' + // Specifies a valid user name
'Password=password;' + // Specifies the corresponding password for the user name
'Initial Catalog=database;' + // Specifies the initial catalog for the target database
'Persist Security Info=true'; // Enables the "Persist Security Info" flag
Microsoft Azure
dxBackendDatabaseSQLConnection1.ConnectionString :=
'XpoProvider=MSSqlServer;' + // Specifies the database engine type
'Data Source=tcp:YourServerName.database.windows.net;' + // Specifies the database host
'User Id=azureuser;' + // Specifies a valid user name
'Password=password;' + // Specifies the corresponding password for the user name
'Initial Catalog=DXApplication384'; // Specifies the initial catalog for the target database
SQLite
SQLite is an open-source relational database engine.
Tip
VCL Backend implementation has built-in support for Microsoft SQL, Azure SQL, and SQLite database engines.
You can use the TdxBackendDatabaseSQLConnection component to connect TdxDashboardControl and TdxReport components to these databases without additional dependencies and extra configuration.
Version | Database Provider Assemblies | NuGet Packages |
|---|---|---|
SQLite 3 | Microsoft.Data.SQLite.dll 8.* |
Connection String Example
dxBackendDatabaseSQLConnection1.ConnectionString :=
'XpoProvider=SQLite;' + // Specifies the database engine type
'Data Source=C:\Test\MyDatabase.sqlite'; // Specifies the path to a local database file
Tip
Refer to the following topic for step-by-step instructions on how to use SQLite databases in your applications powered by ExpressReports and ExpressDashboards: How to Use SQLite.
In-Memory
To bind TdxDashboardControl and TdxReport components to data stored in memory (in JSON format), use the TdxBackendInMemoryJSONConnection component.
You can use the TdxBackendInMemoryJSONConnection.ConnectionString property to:
- Directly specify data as a JSON string.
- Specify a Web Service Endpoint URL or a path to the source JSON file.
Connection String Examples
JSON String Data
The following JSON data string example defines a simple table containing two columns (id and caption) and two rows:
dxBackendInMemoryJSONConnection1.ConnectionString :=
'Json=''[{"id": 1, "caption": "test1"},{"id": 2, "caption": "test2"}]''';
Tip
Alternatively, you can call the TdxBackendCustomInMemoryJSONConnection.SetJSONValue procedure and pass a JSON data string as a parameter. Refer to the procedure description for detailed information and a code example.
Web Service Endpoint Connection String
dxBackendInMemoryJSONConnection1.ConnectionString :=
'Uri=https://northwind.netcore.io/customers.json;' + // Specifies the path to a source JSON file
'Username=user;' + // Specifies a valid user name
'Password=pwd;' + // Specifies the corresponding password for the user name
'MyAuthHeader1=secretToken1;MyAuthHeader2=secretToken2;' + // Specifies authentication tokens
'query:id=123456;query:name=MyName;' // Specifies the required query ID and name
Tip
Refer to the following topic for step-by-step instructions on using in-memory JSON data in your ExpressReports and ExpressDashboards-powered applications: How to Use Memory-Based Data Sources.
PostgreSQL
PostgreSQL is an open-source relational database management system.
| Versions | Database Provider Assembly | NuGet Package |
|---|---|---|
| PostgreSQL 7, 8, 9, 10, 11, 12, 15, 16, 17, 18 | Npgsql.dll 9.* | Npgsql |
Connection String Example
dxBackendDatabaseSQLConnection1.ConnectionString :=
'XpoProvider=Postgres;' + // Specifies the database engine type
'Server=127.0.0.1;' + // Specifies the database host IP address
'User ID=myuser;' + // Specifies a valid user name
'Password=123;' + // Specifies the corresponding password for the user name
'Database=postgres;' + // Specifies the target database name
'Encoding=UNICODE'; // Sets UTF-8 as the required encoding
Tip
Refer to the following topic for step-by-step instructions on using PostgreSQL databases in your ExpressReports and ExpressDashboards-powered applications: How to Use PostgreSQL.
MySQL
MySQL is an open-source relational database management system.
Version | Database Provider Assemblies | NuGet Packages |
|---|---|---|
MySQL 5.0, 5.1, 5.7, 8.0.31, 9.1.0 |
|
Connection String Example
dxBackendDatabaseSQLConnection1.ConnectionString :=
'XpoProvider=MySql;' + // Specifies the database engine type
'Server=127.0.0.1;' + // Specifies the database server host IP address
'User ID=MyUserName;' + // Specifies a valid user name
'Password=MyPassword;' + // Specifies the corresponding password for the user name
'Database=MyDatabase;' + // Specifies the target database name
'Persist Security Info=true;Charset=utf8'; // Specifies additional attributes
Oracle
Oracle Database is a proprietary multi-model database management system developed by the Oracle Corporation.
| Versions | Database Provider Assembly | NuGet Package |
|---|---|---|
| Oracle 9i, 10g, 11g, 12c, 18c, 21c, 23ai | Oracle.ManagedDataAccessCore.dll 23.* | Oracle.ManagedDataAccess.Core |
Connection String Example
dxBackendDatabaseSQLConnection1.ConnectionString :=
'XpoProvider=Oracle;' + // Specifies the database engine type
'Data Source=TORCL;' + // Specifies the target database
'User ID=MyUserName;' + // Specifies a valid user name
'Password=MyPassword'; // Specifies the corresponding password for the user name
Firebird
Firebird is an open-source SQL relational database management system.
| Versions | Database Provider Assembly | NuGet Package |
|---|---|---|
| Firebird 1.5, 2.5.7, 3.0.13, 4.0.6, 5.0.3 | FirebirdSql.Data.FirebirdClient.dll 10.* | FirebirdSql.Data.FirebirdClient |
Connection String Example
dxBackendDatabaseSQLConnection1.ConnectionString :=
'XpoProvider=Firebird;' + // Specifies the database engine type
'DataSource=localhost;' + // Specifies the database host address (example: IP 127.0.0.1)
'User=SYSDBA;' + // Specifies a valid user name
'Password=password;' + // Specifies the corresponding password for the user name
'Database=C:\Program Files\Firebird\Firebird_5_0\examples\empbuild\EMPLOYEE.FDB;' +
'ServerType=0;Charset=NONE'; // Specifies additional attributes
Tip
Refer to the following topic for step-by-step instructions on how to use Firebird databases in your applications powered by ExpressReports and ExpressDashboards: How to Use Firebird.
-
Microsoft SQL, Microsoft Azure, and SQLite require no database provider assembly (VCL backend implementation has built-in support for these database management systems).
-
If you need to store data in memory, use the TdxBackendInMemoryJSONConnection component instead.