GetFactoryClasses
using System;
using System.Data;
using System.Data.Common;
static class Prg {
public static void Main() {
DataTable installedProviders = DbProviderFactories.GetFactoryClasses();
foreach (DataRow provider in installedProviders.Rows) {
Console.WriteLine("{0,-30} {1}",
provider["InvariantName" ],
provider["Name" ]
// provider["Description" ],
// provider["AssemblyQualifiedName"]
);
}
}
}
This example, when run, might print something like
System.Data.Odbc Odbc Data Provider
System.Data.OleDb OleDb Data Provider
System.Data.OracleClient OracleClient Data Provider
System.Data.SqlClient SqlClient Data Provider
System.Data.SqlServerCe.4.0 Microsoft SQL Server Compact Data Provider 4.0
IBM.Data.DB2 IBM DB2 .NET Data Provider
IBM.Data.Informix IBM Informix .NET Data Provider
IBM.Data.DB2.11.1.4040 IBM DB2 .NET Data Provider 11.1.4040
IBM.Data.Informix.11.1.4040 IBM Informix .NET Data Provider 11.1.4040
MySql.Data.MySqlClient MySQL Data Provider
PS C:\> [System.Data.Common.DbProviderFactories]::GetFactoryClasses()
The values returned by
GetFactoryClasses()
are found in the
machine.config file, particularly under
<system.data><DbProviderFactories>
:
<?xml version="1.0"?>
<configuration>
…
<system.data>
<DbProviderFactories>
<add name="TQ84SQL Data Provider" invariant="TQ84.Data.TQ84Client" description=".Net Framework Data Provider for TQ84" type="TQ84.Data.TQ84Client.TQ84ClientFactory, TQ84.Data, Version=1.0.00.0, Culture=neutral, PublicKeyToken=fc9568a33b28e4d2" />
<add name="…" … >
</DbProviderFactories>
</system.data>
…
</configuration>