vcl-dxbackend-dot-connectionstring-dot-json-dot-tdxbackendcustominmemoryjsonconnection.md
Specifies a connection string or stores serialized data (in the JSON format).
property ConnectionString: string read; write;
| Type | Description |
|---|---|
| string |
The connection string or serialized data in the JSON format.
|
The ConnectionString property serves different purposes for TdxBackendInMemoryJSONConnection and TdxBackendDataSetJSONConnection components (TdxBackendCustomInMemoryJSONConnection descendants).
ConnectionString is the main property[1] in the TdxBackendInMemoryJSONConnection class. You can use this property to:
The ConnectionString property stores serialized JSON data from datasets associated with a TdxBackendDataSetJSONConnection component. Use the DataSets property to bind and configure one or multiple datasets (TdxMemData, TFDTable, TFDQuery, etc.).
The following code example demonstrates an OnClick event handler that configures a TdxBackendInMemoryJSONConnection component, assigns a table defined within a JSON string to the ConnectionString property, and displays the Dashboard Designer dialog:
uses
dxDashboard.Control, // Declares the TdxDashboardControl component
dxBackend.ConnectionString.JSON; // Declares the TdxBackendInMemoryJSONConnection component
// ...
procedure TMyForm.cxDisplayDesignerButtonClick(Sender: TObject);
begin
// Specify a user-friendly data connection name (for end-user dialogs):
dxBackendInMemoryJSONConnection1.DisplayName := 'Memory-Based JSON Data Source';
// Define a table that consists of three columns ("id", "Region", and "Sales") and five data rows:
dxBackendInMemoryJSONConnection1.ConnectionString := 'Json=''' +
'[{"id": 1, "Region": "Asia", "Sales": 4.7685},' + // Row #1
'{"id": 2, "Region": "Australia", "Sales": 1.9576},' + // Row #2
'{"id": 3, "Region": "Europe", "Sales": 3.3579},' + // Row #3
'{"id": 4, "Region": "North America", "Sales": 3.7477},' + // Row #4
'{"id": 5, "Region": "South America", "Sales": 1.8237}]'''; // Row #5
dxDashboardControl1.ShowDesigner; // Displays the "Dashboard Designer" dialog
end;
#include "dxDashboard.Control.hpp" // Declares the TdxDashboardControl component
#include "dxBackend.ConnectionString.JSON.hpp" // Declares the TdxBackendInMemoryJSONConnection component
// Add the following linker directives to the corresponding CPP source file:
#pragma link "dxDashboard.Control" // Required to use dxDashboard.Control.hpp declarations
#if defined(_WIN64) // Required to use dxBackend.ConnectionString.JSON.hpp declarations
#pragma link "dxBackend.ConnectionString.JSON.o"
#else
#pragma link "dxBackend.ConnectionString.JSON.obj"
#endif
// ...
void __fastcall TMyForm::cxDisplayDesignerButtonClick(TObject *Sender)
{
// Specify a user-friendly data connection name (for end-user dialogs):
dxBackendInMemoryJSONConnection1->DisplayName = "Memory-Based JSON Data Source";
// Define a table that consists of three columns ("id", "Region", and "Sales") and five data rows:
dxBackendInMemoryJSONConnection1->ConnectionString = "Json=\"\""
L"[{\"id\": 1, \"Region\": \"Asia\", \"Sales\": 1.9576}," // Row #1
L"{\"id\": 2, \"Region\": \"Australia\", \"Sales\": 1.9576}," // Row #2
L"{\"id\": 3, \"Region\": \"Europe\", \"Sales\": 3.3579}," // Row #3
L"{\"id\": 4, \"Region\": \"North America\", \"Sales\": 3.7477}," // Row #4
L"{\"id\": 5, \"Region\": \"South America\", \"Sales\": 1.8237}]\"\"" // Row #5
dxDashboardControl1->ShowDesigner(); // Displays the "Dashboard Designer" dialog
}
The code example in this section demonstrates an OnClick event handler that configures a TdxBackendInMemoryJSONConnection component used to load JSON data from an external source using a connection string and displays the Dashboard Designer dialog.
Note
This code example demonstrates a sample connection string. You must replace specified parameter values with required URI, username, password, access tokens, etc.
uses
dxDashboard.Control, // Declares the TdxDashboardControl component
dxBackend.ConnectionString.JSON; // Declares the TdxBackendInMemoryJSONConnection component
// ...
procedure TMyForm::cxDisplayDesignerButtonClick(Sender: TObject);
begin
dxBackendInMemoryJSONConnection1.Active := False; // Terminates the current connection (if one exists)
// Specify a user-friendly data connection name (for end-user dialogs):
dxBackendInMemoryJSONConnection1.DisplayName := 'Memory-Based JSON Data Source';
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
dxBackendInMemoryJSONConnection1.Active := True; // Connects to the target Web service endpoint
dxDashboardControl1.ShowDesigner(); // Displays the "Dashboard Designer" dialog
end;
#include "dxDashboard.Control.hpp" // Declares the TdxDashboardControl component
#include "dxBackend.ConnectionString.JSON.hpp" // Declares the TdxBackendInMemoryJSONConnection component
// Add the following linker directives to the corresponding CPP source file:
#pragma link "dxDashboard.Control" // Required to use dxDashboard.Control.hpp declarations
#if defined(_WIN64) // Required to use dxBackend.ConnectionString.JSON.hpp declarations
#pragma link "dxBackend.ConnectionString.JSON.o"
#else
#pragma link "dxBackend.ConnectionString.JSON.obj"
#endif
// ...
void __fastcall TMyForm::cxDisplayDesignerButtonClick(TObject *Sender)
{
dxBackendInMemoryJSONConnection1->Active = false; // Terminates the current connection (if one exists)
// Specify a user-friendly data connection name (for end-user dialogs):
dxBackendInMemoryJSONConnection1->DisplayName = "Memory-Based JSON Data Source";
dxBackendInMemoryJSONConnection1->ConnectionString =
L"Uri=https://northwind.netcore.io/customers.json;" // Specifies the path to a source JSON file
L"Username=user;" // Specifies a valid user name
L"Password=pwd;" // Specifies the corresponding password for the user name
L"MyAuthHeader1=secretToken1;MyAuthHeader2=secretToken2;" // Specifies authentication tokens
L"query:id=123456;query:name=MyName;" // Specifies the required query ID and name
dxBackendInMemoryJSONConnection1->Active = true; // Connects to the target Web service endpoint
dxDashboardControl1->ShowDesigner(); // Displays the "Dashboard Designer" dialog
}
The following code example uses a sample JSON file hosted on GitHub by DevExpress as a data source for the TdxBackendInMemoryJSONConnection component:
uses
dxDashboard.Control, // Declares the TdxDashboardControl component
dxBackend.ConnectionString.JSON; // Declares the TdxBackendInMemoryJSONConnection component
// ...
procedure TMyForm.cxDisplayDesignerButtonClick(Sender: TObject);
var
AUri: string;
begin
AUri := 'Uri=https://raw.githubusercontent.com/DevExpress-Examples/DataSources/master/JSON/customers.json';
// Specify a user-friendly data connection name (for end-user dialogs):
dxBackendInMemoryJSONConnection1.DisplayName := 'Memory-Based JSON Data Storage';
dxBackendInMemoryJSONConnection1.ConnectionString := AUri; // Assigns the target Web Service URI
dxDashboardControl1.ShowDesigner; // Displays the "Dashboard Designer" dialog
end;
#include "dxDashboard.Control.hpp" // Declares the TdxDashboardControl component
#include "dxBackend.ConnectionString.JSON.hpp" // Declares the TdxBackendInMemoryJSONConnection component
// Add the following linker directives to the corresponding CPP source file:
#pragma link "dxDashboard.Control" // Required to use dxDashboard.Control.hpp declarations
#if defined(_WIN64) // Required to use dxBackend.ConnectionString.JSON.hpp declarations
#pragma link "dxBackend.ConnectionString.JSON.o"
#else
#pragma link "dxBackend.ConnectionString.JSON.obj"
#endif
// ...
void __fastcall TMyForm::cxDisplayDesignerButtonClick(TObject *Sender)
{
UnicodeString AUri;
AUri = "Uri=https://raw.githubusercontent.com/DevExpress-Examples/DataSources/master/JSON/customers.json";
// Specify a user-friendly data connection name (for end-user dialogs):
dxBackendInMemoryJSONConnection1->DisplayName = "Memory-Based JSON Data Source";
dxBackendInMemoryJSONConnection1->ConnectionString = AUri; // Assigns the target Web Service URI
dxDashboardControl1->ShowDesigner(); // Displays the "Dashboard Designer" dialog
}
The following code example loads an XML-based report template (TdxReport.Layout) from a REPX file, populates the template with test data defined in a connection string, and exports the resulting report as a PNG image:
uses
dxReport, // Declares the TdxReport component and related types
dxBackend.ConnectionString.JSON; // Declares the TdxBackendInMemoryJSONConnection component
// ...
procedure TMyForm.Button1Click(Sender: TObject);
var
AJSONDataConnection: TdxBackendInMemoryJSONConnection;
AReport: TdxReport;
AFileStream: TFileStream;
begin
AJSONDataConnection := TdxBackendInMemoryJSONConnection.Create(Self);
try
AJSONDataConnection.Name := 'JSONData';
// Specify in-memory report data as a connection string
AJSONDataConnection.ConnectionString :=
'Json=''[{"id":1, "caption":"test1"},{"id":2, "caption":"test2"}]''';
AReport := TdxReport.Create(Self);
try
AReport.ReportName := 'Report';
AReport.Layout.LoadFromFile('Report.repx'); // Loads a report template
AFileStream := TFileStream.Create('Report.png', fmOpenReadWrite);
try
AReport.ExportToImage(AFileStream); // Exports the report in the default image export format (PNG)
finally
AFileStream.Free;
end;
finally
AReport.Free;
end;
finally
AJSONDataConnection.Free;
end;
end;
#include "dxReport.hpp" // Declares the TdxReport component
#include "dxBackend.ConnectionString.JSON.hpp" // Declares the TdxBackendInMemoryJSONConnection component
// Add the following linker directives to the corresponding CPP source file:
#pragma link "dxReport" // Required for dxReport.hpp declarations
#if defined(_WIN64) // Required to use dxBackend.ConnectionString.JSON.hpp declarations
#pragma link "dxBackend.ConnectionString.JSON.o"
#else
#pragma link "dxBackend.ConnectionString.JSON.obj"
// ...
void __fastcall TMyForm::Button1Click(TObject *Sender)
{
TdxBackendInMemoryJSONConnection *AJSONDataConnection;
TdxReport *AReport;
TFileStream *AFileStream;
AJSONDataConnection = new TdxBackendInMemoryJSONConnection(this);
try
{
AJSONDataConnection->Name = "JSONData";
// Specify in-memory report data as a connection string
AJSONDataConnection->ConnectionString =
"Json=\"\"[{\"id\":1, \"caption\":\"test1\"}, {\"id\":2, \"caption\":\"test2\"}]\"";
AReport = new TdxReport(this);
try
{
AReport->ReportName = "Report";
AReport->Layout->LoadFromFile("Report.repx"); // Loads a report template
AFileStream = new TFileStream('Report.png', fmOpenReadWrite);
try
{
AReport->ExportToImage(AFileStream); // Exports the report in the default image export format (PNG)
}
__finally
{
delete AFileStream;
}
}
__finally
{
delete AReport;
}
}
__finally
{
delete AJSONDataConnection;
}
}
The ConnectionString property’s default value is an empty string.
Footnotes
See Also
TdxBackendDatabaseSQLConnection.ConnectionString Property
TdxBackendDataSetJSONConnection.DataSets Property
TdxBackendCustomInMemoryJSONConnection Class