DataConnector | ComponentOne
In This Topic
    DbFactory Support
    In This Topic

    DataConnector supports DbProvider Factories, which can be configured to produce the needed objects for applications and tools to connect to and interact with external ADO.NET data connectors. To explain how this is done, Salesforce is going to be used as an example. The ADO.NET Provider for Salesforce implements the C1SalesforceProviderFactory class to provide support for DbProviderFactory and allow the writing of generic data-access code through the ADO.NET base classes. The following sections demonstrate the creation and usage of DbProviderFactory and DbConnection objects by C1SalesforceProviderFactory.

    Register the provider to the configuration context

    To create a strongly typed DbProviderFactory for SalesForce in a Windows application, register the ADO.NET provider manually in the configuration context (app.config, or web.config) of DbFactory configuration, by using the code below:

    App.config
    Copy Code
    <system.data>
        <DbProviderFactories>
            <add name="C1.AdoNet.Salesforce" invariant="C1.AdoNet.Salesforce" 
                description="C1.AdoNet.Salesforce is a data provider that allows 
                to work with Salesforce service via ADO.NET APIs."
                type="C1.AdoNet.Salesforce.C1SalesforceProviderFactory, 
                C1.AdoNet.Salesforce, Version=1.0.20***.**, Culture=neutral, 
                PublicKeyToken=yourToken" />
        </DbProviderFactories>
    </system.data>

    The following fragment in the configuration file demonstrates a Salesforce connection string in the context:

    App.config
    Copy Code
    <connectionStrings>
        <add name="SalesforceServer" providerName="C1.AdoNet.Salesforce" 
            connectionString="Username=****@****.com;Password=****;
            Security Token=yourToken;OAuth Client Id=yourID;
            OAuth Client Secret=yourClientSecret;
            OAuth Token Endpoint=yourToken;
            Url=yourURL; Use Pool = false; Max Page Size = 200" />
    </connectionStrings>

    Acquire the DbProviderFactory and the DbConnection objects

    Instantiate a strongly typed DbProviderFactory object, use it to create a DbConnection object, then connect to Salesforce, by using the following code:

    C#
    Copy Code
    DbProviderFactory factory = DbProviderFactories.GetFactory("C1.AdoNet.Salesforce");
    
    // Create connection
    using (DbConnection connection = factory.CreateConnection())
    {
        connection.ConnectionString = "User=yourUser;Password=yourPassword;Security Token=yourToken;";
        connection.Open();
    }

    Alternatively, the connection string can also be read from the configuration file of the application. To retrieve the Salesforce connection string defined in the configuration file, use the following code:

    C#
    Copy Code
    ConnectionStringSettingsCollection csettings = ConfigurationManager.ConnectionStrings;
    
    // Set connection string, by fetching it from the config file
    if (csettings != null)
    {
        foreach (ConnectionStringSettings connString in csettings)
        {
            if (connString.ProviderName == "C1.AdoNet.Salesforce")
            {
                connection.ConnectionString = connString.ConnectionString;
                break;
            }
        }
    }

    Note: The ConnectionStringSettingsCollection class requires a reference to System.Configuration.dll

    Execute DbCommands

    The acquired DbProviderFactory and DbConnection objects can be used for creating and executing commands to fetch the database information from the data source. For example, a "SELECT" query to Salesforce can be executed with the following code:

    C#
    Copy Code
    // Create command
    DbCommand command = factory.CreateCommand();
    command.Connection = connection;
    command.CommandText = "Select * from Customer__c limit 5";
    
    // Create DataAdapter
    DbDataAdapter adapter = factory.CreateDataAdapter();
    adapter.SelectCommand = command;
    
    // Fill DataTable
    DataTable dataTable = new DataTable();
    adapter.Fill(dataTable);
    
    // Bind DataTable to C1FlexGrid
    c1FlexGrid1.DataSource = dataTable;

    The other supported ADO.NET Providers can be similarly registered in context of DbFactory configuration in the local App.config files, using the respective information from the following table:

    Provider name Provider registration string Connection string
    OData
    Copy Code
    <system.data>
      <DbProviderFactories>
        <add name="C1.AdoNet.OData"
          invariant="C1.AdoNet.OData"
          description="ADO.NET provider for OData service"
          type="C1.AdoNet.OData.C1ODataProviderFactory, 
          C1.AdoNet.OData, Version=1.0.20***.**,
          Culture=neutral, PublicKeyToken=yourToken" />
      </DbProviderFactories>
    </system.data>
    Copy Code
    <connectionStrings>
      <add name="ODataServer"
        providerName="C1.AdoNet.OData" 
        connectionString="Url=https://***/***/***;
        Password=****;Username=****@****.com;
        Use Dynamic Type = 'false'" />
      </connectionStrings>
    Dynamic 365 Sales
    Copy Code
    <system.data>
      <DbProviderFactories>
        <add name="C1.AdoNet.D365S" 
          invariant="C1.AdoNet.D365S"
          description="ADO.NET provider for D365S service."
          type="C1.AdoNet.D365S.C1D365SProviderFactory,
          C1.AdoNet.D365S, Version=1.0.20***.**, 
          Culture=neutral, PublicKeyToken=yourToken" />
      </DbProviderFactories>
    </system.data>
    Copy Code
    <connectionStrings>
      <add name="D365SServer" 
        providerName="C1.AdoNet.D365S" 
        connectionString="Url=https://***/***/***;
        OAuth Client Id=****;
        OAuth Client Secret=****;
        OAuth Token Endpoint=https://***/***/***;
        OAuth Extend Properties=yourExtendProperties;
        Use Etag=true;Max Page Size = 100" />
    </connectionStrings>
    Kintone
    Copy Code
    <system.data>
      <DbProviderFactories>
        <add name="C1.AdoNet.Kintone" 
          invariant="C1.AdoNet.Kintone"
          description="ADO.NET provider for Kintone service."
          type="C1.AdoNet.Kintone.C1KintoneProviderFactory,
          C1.AdoNet.Kintone, Version=1.0.20***.**,
          Culture=neutral, PublicKeyToken=yourToken" />
      </DbProviderFactories>
    </system.data>
    Copy Code
    <connectionStrings>
      <add name="KintoneServer" 
        providerName="C1.AdoNet.Kintone" 
        connectionString="Url=https://***/***/***;
        Username=****@****.com;Password=****;" />
    </connectionStrings>
    QuickBooks Online
    Copy Code
    <system.data>
      <DbProviderFactories>
        <add name="C1.AdoNet.QuickBooksOnline" 
          invariant="C1.AdoNet.QuickBooksOnline"
          description="ADO.NET provider for QuickBooksOnline service"
          type="C1.AdoNet.QuickBooksOnline.C1QuickBooksOnlineProviderFactory,
          C1.AdoNet.QuickBooksOnline, Version=1.0.20***.**,
          Culture=neutral, PublicKeyToken=yourToken" />
      </DbProviderFactories>
    </system.data>
    Copy Code
    <connectionStrings>
      <add name="QuickBooksOnlineServer" 
        providerName="C1.AdoNet.QuickBooksOnline" 
        connectionString="Company Id=yourID;
        OAuth Access Token=yourToken;
        OAuth Client Id=****;
        OAuth Client Secret=****;
        OAuth Refresh Token=****;
        OAuth Token Endpoint=https://***/***/***;
        Minor Version=14; Use Pool=false; 
        Max Page Size = 50;Country Code=yourCode;
        Use SandBox=True" />
    </connectionStrings>
    Google Analytics
    Copy Code
    <system.data>
      <DbProviderFactories>
        <add name="C1.AdoNet.GoogleAnalytics"
          invariant="C1.AdoNet.GoogleAnalytics"
          description="ADO.NET provider for GoogleAnalytics service"
          type="C1.AdoNet.GoogleAnalytics.C1GoogleAnalyticsProviderFactory,
          C1.AdoNet.GoogleAnalytics, Version=1.0.20***.**, 
          Culture=neutral, PublicKeyToken=yourToken" />
      </DbProviderFactories>
    </system.data>
    Copy Code
    <connectionStrings>
      <add name="GoogleAnalyticsServer"
        providerName="C1.AdoNet.GoogleAnalytics" 
        connectionString="Key File=yourFile;
        View Id=****" />
    </connectionStrings>