Back to Devexpress

TdxBackendCustomInMemoryJSONConnection.ConnectionString Property

vcl-dxbackend-dot-connectionstring-dot-json-dot-tdxbackendcustominmemoryjsonconnection.md

latest14.4 KB
Original Source

TdxBackendCustomInMemoryJSONConnection.ConnectionString Property

Specifies a connection string or stores serialized data (in the JSON format).

Declaration

delphi
property ConnectionString: string read; write;

Property Value

TypeDescription
string

The connection string or serialized data in the JSON format.

|

Remarks

The ConnectionString property serves different purposes for TdxBackendInMemoryJSONConnection and TdxBackendDataSetJSONConnection components (TdxBackendCustomInMemoryJSONConnection descendants).

In-Memory JSON Connection Component

ConnectionString is the main property[1] in the TdxBackendInMemoryJSONConnection class. You can use this property to:

  • Specify required data as a JSON string.
  • Specify a Web Service Endpoint URL or a path to the required JSON file.

Dataset-Based JSON Connection Component

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.).

Code Examples

Assign JSON Data as a Connection String

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:

delphi
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;
cpp
#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
}

Load JSON Data from a Remote Source

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.

delphi
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;
cpp
#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
}

Load Data from a DevExpress JSON Sample

The following code example uses a sample JSON file hosted on GitHub by DevExpress as a data source for the TdxBackendInMemoryJSONConnection component:

delphi
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;
cpp
#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
}

Generate Reports Based on In-Memory Data

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:

delphi
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;
cpp
#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;
  }
}

Default Value

The ConnectionString property’s default value is an empty string.

Footnotes

  1. Available in the Object Inspector.

See Also

TdxBackendDatabaseSQLConnection.ConnectionString Property

TdxBackendDataSetJSONConnection.DataSets Property

TdxBackendCustomInMemoryJSONConnection Class

TdxBackendCustomInMemoryJSONConnection Members

dxBackend.ConnectionString.JSON Unit