Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Proces získání DbProviderFactory zahrnuje předání informací o poskytovateli dat do DbProviderFactories třídy. Na základě těchto údajů metoda GetFactory vytvoří silně typovanou továrnu poskytovatelů. Pokud například chcete vytvořit SqlClientFactory, můžete předat GetFactory řetězec, ve kterém je název zprostředkovatele uveden jako "System.Data.SqlClient". Druhé přetížení GetFactory přebírá DataRow. Jakmile vytvoříte zprostředkovatelní továrnu, můžete pomocí jejích metod vytvořit další objekty. Některé metody SqlClientFactory zahrnují CreateConnection, CreateCommand, a CreateDataAdapter.
Poznámka:
Třídy OracleClientFactory, OdbcFactorya OleDbFactory třídy také poskytují podobné funkce.
Registrace DbProviderFactories
Každý zprostředkovatel dat rozhraní .NET Framework, který podporuje třídu založenou na továrním vzoru, registruje konfigurační informace v DbProviderFactories části souboru machine.config v místním počítači. Následující fragment konfiguračního souboru ukazuje syntaxi a formát pro System.Data.SqlClient.
<system.data>
<DbProviderFactories>
<add name="SqlClient Data Provider"
invariant="System.Data.SqlClient"
description=".Net Framework Data Provider for SqlServer"
type="System.Data.SqlClient.SqlClientFactory, System.Data,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
/>
</DbProviderFactories>
</system.data>
Atribut invariant identifikuje základního zprostředkovatele dat. Tato třídílná syntaxe pojmenování se používá také při vytváření nové továrny a k identifikaci zprostředkovatele v konfiguračním souboru aplikace, aby se název zprostředkovatele společně s přidruženým připojovacím řetězcem mohl načíst za běhu.
Načítání informací o zprostředkovateli
Pomocí této metody můžete načíst informace o všech poskytovatelích dat nainstalovaných v místním počítači GetFactoryClasses . Vrátí DataTable pojmenovaný DbProviderFactories, který obsahuje sloupce popsané v následující tabulce.
| Řadový sloupcový | Název sloupce | Příklad výstupu | Popis |
|---|---|---|---|
| 0 | Name |
Zprostředkovatel dat SqlClient | Čitelný název zprostředkovatele dat |
| 0 | Description |
Rozhraní .Net Framework Zprostředkovatel dat pro SQL Server | Čitelný popis zprostředkovatele dat |
| 2 | InvariantName |
System.Data.SqlClient | Název, který lze použít programově k odkazování na zprostředkovatele dat |
| 3 | AssemblyQualifiedName |
System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | Plně kvalifikovaný název třídy továrny, která obsahuje dostatek informací pro instanciaci objektu |
Toto DataTable lze použít k tomu, aby uživatel mohl vybrat DataRow za běhu.
DataRow Vybraný prvek lze pak předat metodě GetFactory, aby se vytvořil silně typovaný DbProviderFactory. Vybranou DataRow metodu GetFactory lze předat k vytvoření požadovaného DbProviderFactory objektu.
Výpis nainstalovaných tříd služby Provider Factory
Tento příklad ukazuje, jak použít metodu GetFactoryClasses k vrácení DataTable obsahujícího informace o nainstalovaných poskytovatelích. Kód prochází každý řádek v okně DataTablekonzoly a zobrazuje informace pro každého nainstalovaného zprostředkovatele.
// This example assumes a reference to System.Data.Common.
static DataTable GetProviderFactoryClasses()
{
// Retrieve the installed providers and factories.
DataTable table = DbProviderFactories.GetFactoryClasses();
// Display each row and column value.
foreach (DataRow row in table.Rows)
{
foreach (DataColumn column in table.Columns)
{
Console.WriteLine(row[column]);
}
}
return table;
}
' This example assumes a reference to System.Data.Common.
Private Shared Function GetProviderFactoryClasses() As DataTable
' Retrieve the installed providers and factories.
Dim table As DataTable = DbProviderFactories.GetFactoryClasses()
' Display each row and column value.
Dim row As DataRow
Dim column As DataColumn
For Each row In table.Rows
For Each column In table.Columns
Console.WriteLine(row(column))
Next
Next
Return table
End Function
Použití konfiguračních souborů aplikace k ukládání informací o továrně
Vzor návrhu používaný pro práci s továrnami zahrnuje ukládání informací o poskytovateli a připojovacím řetězci v konfiguračním souboru aplikace, jako například app.config pro aplikaci pro Windows a web.config pro aplikaci ASP.NET.
Následující fragment konfiguračního souboru ukazuje, jak uložit dva pojmenované připojovací řetězec: "NorthwindSQL" pro připojení k databázi Northwind v SQL Serveru a "NorthwindAccess" pro připojení k databázi Northwind v Accessu/Jet. Název invariant se používá pro providerName atribut.
<configuration>
<connectionStrings>
<clear/>
<add name="NorthwindSQL"
providerName="System.Data.SqlClient"
connectionString=
"Data Source=MSSQL1;Initial Catalog=Northwind;Integrated Security=true"
/>
<add name="NorthwindAccess"
providerName="System.Data.OleDb"
connectionString=
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\Northwind.mdb;"
/>
</connectionStrings>
</configuration>
Důležité
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Pokud se připojujete k Azure SQL, Spravované identity pro prostředky Azure jsou doporučenou metodou ověřování.
Získání připojovacího řetězce podle názvu poskytovatele
Chcete-li vytvořit továrnu poskytovatele, musíte zadat připojovací řetězec a také název poskytovatele. Tento příklad ukazuje, jak načíst připojovací řetězec z konfiguračního souboru aplikace předáním názvu zprostředkovatele v invariantním formátu "System.Data.ProviderName". Kód prochází ConnectionStringSettingsCollection. Vrátí ProviderName v případě úspěchu; jinak null (Nothing ve Visual Basicu). Pokud je pro zprostředkovatele více položek, vrátí se první nalezený záznam. Další informace a příklady načítání připojovací řetězec z konfiguračních souborů najdete v tématu Připojovací řetězce a konfigurační soubory.
Poznámka:
Aby se kód spustil, vyžaduje se odkaz na tento odkaz System.Configuration.dll .
// Retrieve a connection string by specifying the providerName.
// Assumes one connection string per provider in the config file.
static string? GetConnectionStringByProvider(string providerName)
{
// Get the collection of connection strings.
ConnectionStringSettingsCollection? settings =
ConfigurationManager.ConnectionStrings;
// Walk through the collection and return the first
// connection string matching the providerName.
if (settings != null)
{
foreach (ConnectionStringSettings cs in settings)
{
if (cs.ProviderName == providerName)
{
return cs.ConnectionString;
}
}
}
return null;
}
' Retrieve a connection string by specifying the providerName.
' Assumes one connection string per provider in the config file.
Private Shared Function GetConnectionStringByProvider( _
ByVal providerName As String) As String
'Return Nothing on failure.
Dim returnValue As String = Nothing
' Get the collection of connection strings.
Dim settings As ConnectionStringSettingsCollection = _
ConfigurationManager.ConnectionStrings
' Walk through the collection and return the first
' connection string matching the providerName.
If Not settings Is Nothing Then
For Each cs As ConnectionStringSettings In settings
If cs.ProviderName = providerName Then
returnValue = cs.ConnectionString
Exit For
End If
Next
End If
Return returnValue
End Function
Vytvoření DbProviderFactory a DbConnection
Tento příklad ukazuje, jak vytvořit DbProviderFactory a DbConnection objekt předáním názvu zprostředkovatele ve formátu System.Data.ProviderName a připojovací řetězec. Objekt DbConnection je vrácen při úspěchu; null (Nothing v jazyce Visual Basic) u jakékoli chyby.
Kód získává DbProviderFactory zavoláním GetFactory.
CreateConnection Pak metoda vytvoří DbConnection objekt a ConnectionString vlastnost je nastavena na připojovací řetězec.
// Given a provider name and connection string,
// create the DbProviderFactory and DbConnection.
// Returns a DbConnection on success; null on failure.
static DbConnection CreateDbConnection(
string providerName, string connectionString)
{
// Assume failure.
DbConnection connection = null;
// Create the DbProviderFactory and DbConnection.
if (connectionString != null)
{
try
{
DbProviderFactory factory =
DbProviderFactories.GetFactory(providerName);
connection = factory.CreateConnection();
connection.ConnectionString = connectionString;
}
catch (Exception ex)
{
// Set the connection to null if it was created.
if (connection != null)
{
connection = null;
}
Console.WriteLine(ex.Message);
}
}
// Return the connection.
return connection;
}
' Given a provider, create a DbProviderFactory and DbConnection.
' Returns a DbConnection on success; Nothing on failure.
Private Shared Function CreateDbConnection( _
ByVal providerName As String, ByVal connectionString As String) _
As DbConnection
' Assume failure.
Dim connection As DbConnection = Nothing
' Create the DbProviderFactory and DbConnection.
If Not connectionString Is Nothing Then
Try
Dim factory As DbProviderFactory = _
DbProviderFactories.GetFactory(providerName)
connection = factory.CreateConnection()
connection.ConnectionString = connectionString
Catch ex As Exception
' Set the connection to Nothing if it was created.
If Not connection Is Nothing Then
connection = Nothing
End If
Console.WriteLine(ex.Message)
End Try
End If
' Return the connection.
Return connection
End Function
Viz také
- DbProviderFactories
- Připojovací řetězce
- Použití tříd konfigurace
- Přehled ADO.NET