MySQL in EJ2 React Pivotview Component

4 Jul 20238 minutes to read

This section describes how to retrieve data from a MySQL database using MySqlClient and bind it to the Pivot Table via a Web API controller.

Create a Web API service to fetch MySQL data

1. Open Visual Studio and create an ASP.NET Core Web App project type, naming it MyWebService. To create an ASP.NET Core Web application, follow the document link.

Create ASP.NET Core Web App project

2. To connect a MySQL Server using the MySqlClient in our application, we need to install the MySql.Data NuGet package. To do so, open the NuGet package manager of the project solution, search for the package MySql.Data and install it.

Add the NuGet package "MySql.Data" to the project

3. Create a Web API controller (aka, PivotController.cs) file under Controllers folder that helps to establish data communication with the Pivot Table.

4. In the Web API controller (aka, PivotController), MySqlConnection helps to connect the MySQL database. Next, using MySqlCommand and MySqlDataAdapter you can process the desired query string and retrieve data from the MySQL database. The Fill method of the MySqlDataAdapter is used to populate the retrieved data into a DataTable as shown in the following code snippet.

    using Microsoft.AspNetCore.Mvc;
    using MySql.Data.MySqlClient;
    using Newtonsoft.Json;
    using System.Data;

    namespace MyWebService.Controllers
    {
        [ApiController]
        [Route("[controller]")]
        public class PivotController : ControllerBase
        {
            public dynamic GetMySQLResult()
            {
                // Replace with your own connection string.
                MySqlConnection connection = new MySqlConnection("<Enter your valid connection string here>");
                connection.Open();
                MySqlCommand command = new MySqlCommand("SELECT * FROM orders", connection);
                MySqlDataAdapter dataAdapter = new MySqlDataAdapter(command);
                DataTable dataTable = new DataTable();
                dataAdapter.Fill(dataTable);
                connection.Close();
                return dataTable;
            }
        }
    }

5. In the Get() method of the PivotController.cs file, the GetMySQLResult method is used to retrieve the MySQL data as a DataTable, which is then serialized into JSON string using JsonConvert.SerializeObject().

    using Microsoft.AspNetCore.Mvc;
    using MySql.Data.MySqlClient;
    using Newtonsoft.Json;
    using System.Data;

    namespace MyWebService.Controllers
    {
        [ApiController]
        [Route("[controller]")]
        public class PivotController : ControllerBase
        {
            [HttpGet(Name = "GetMySQLResult")]
            public object Get()
            {
                return JsonConvert.SerializeObject(GetMySQLResult());
            }

            public dynamic GetMySQLResult()
            {
                // Replace with your own connection string.
                MySqlConnection connection = new MySqlConnection("<Enter your valid connection string here>");
                connection.Open();
                MySqlCommand command = new MySqlCommand("SELECT * FROM orders", connection);
                MySqlDataAdapter dataAdapter = new MySqlDataAdapter(command);
                DataTable dataTable = new DataTable();
                dataAdapter.Fill(dataTable);
                connection.Close();
                return dataTable;
            }
        }
    }

6. Run the application and it will be hosted within the URL https://localhost:7146.

7. Finally, the retrieved data from MySQL database which is in the form of JSON can be found in the Web API controller available in the URL link https://localhost:7146/Pivot, as shown in the browser page below.

Hosted Web API URL

Connecting the Pivot Table to a MySQL database using the Web API service

1. Create a simple React Pivot Table by following the “Getting Started” documentation link.

2. Map the hosted Web API’s URL link https://localhost:7146/Pivot to the Pivot Table in app.ts by using the url property under dataSourceSettings.

     import { PivotViewComponent, FieldList, Inject } from '@syncfusion/ej2-react-pivotview';
     import * as React from 'react';
     import './App.css';

     function App() {
     let dataSourceSettings = {
          url: 'https://localhost:7146/pivot',
          //Other codes here...
     };

     return (<PivotViewComponent id='PivotView' height={350} dataSourceSettings={dataSourceSettings} showFieldList={true}>
     <Inject services={[FieldList]}/></PivotViewComponent>);
     };
     export default App;

3. Frame and set the report based on the data retrieved from the MySQL database.

     import { PivotViewComponent, FieldList, Inject } from '@syncfusion/ej2-react-pivotview';
     import * as React from 'react';
     import './App.css';

     function App() {
     let dataSourceSettings = {
     url: 'https://localhost:7146/pivot',
        enableSorting: true,
        expandAll: false,
        columns: [{ name: 'ShipName' }],
        values: [{ name: 'Freight', caption: 'Sum of Freight' }],
        rows: [{ name: 'ShipCity' }],
        filters: []
     };

     return (<PivotViewComponent id='PivotView' height={350} dataSourceSettings={dataSourceSettings} showFieldList={true}>
     <Inject services={[FieldList]}/></PivotViewComponent>);
     };
     export default App;

When you run the sample, the resulting pivot table will look like this:

PivotTable bound with MySQL data

Explore our React Pivot Table sample and ASP.NET Core Web Application to extract data from a MySQL database and bind to the Pivot Table in this GitHub repository.