Condividi tramite


DbConnectionStringBuilder Classe

Definizione

Fornisce una classe base per i generatori di stringhe di connessione fortemente tipizzato.

public ref class DbConnectionStringBuilder : System::Collections::IDictionary
public ref class DbConnectionStringBuilder : System::Collections::IDictionary, System::ComponentModel::ICustomTypeDescriptor
public class DbConnectionStringBuilder : System.Collections.IDictionary
public class DbConnectionStringBuilder : System.Collections.IDictionary, System.ComponentModel.ICustomTypeDescriptor
type DbConnectionStringBuilder = class
    interface ICollection
    interface IEnumerable
    interface IDictionary
type DbConnectionStringBuilder = class
    interface ICollection
    interface IEnumerable
    interface IDictionary
    interface ICustomTypeDescriptor
type DbConnectionStringBuilder = class
    interface IDictionary
    interface ICollection
    interface IEnumerable
    interface ICustomTypeDescriptor
Public Class DbConnectionStringBuilder
Implements IDictionary
Public Class DbConnectionStringBuilder
Implements ICustomTypeDescriptor, IDictionary
Ereditarietà
DbConnectionStringBuilder
Derivato
Implementazioni

Esempio

L'applicazione console seguente compila due stringhe di connessione, una per un database Microsoft Jet e una per un database di SQL Server. In ogni caso, il codice usa una classe DbConnectionStringBuilder generica per creare la stringa di connessione e quindi passa la proprietà ConnectionString dell'istanza di DbConnectionStringBuilder al costruttore della classe di connessione fortemente tipizzata. Questo non è obbligatorio; Il codice potrebbe anche aver creato singole istanze del generatore di stringhe di connessione fortemente tipizzato. L'esempio analizza anche una stringa di connessione esistente e illustra vari modi per modificare il contenuto della stringa di connessione.

DbConnectionStringBuilder builder =
    new DbConnectionStringBuilder();
builder.ConnectionString = @"Data Source=c:\MyData\MyDb.mdb";
builder.Add("Provider", "Microsoft.Jet.Oledb.4.0");
// Set up row-level locking.
builder.Add("Jet OLEDB:Database Locking Mode", 1);

// The DbConnectionStringBuilder class
// is database agnostic, so it's possible to
// build any type of connection string using
// this class.

// The ConnectionString property might have been
// formatted by the DbConnectionStringBuilder class.
OleDbConnection oledbConnect = new
    OleDbConnection(builder.ConnectionString);
Console.WriteLine(oledbConnect.ConnectionString);

// Use the same DbConnectionStringBuilder to create
// a SqlConnection object.
builder.Clear();
builder.Add("integrated security", true);
builder.Add("Initial Catalog", "AdventureWorks");
builder.Add("Data Source", "(local)");

SqlConnection sqlConnect = new
    SqlConnection(builder.ConnectionString);
Console.WriteLine(sqlConnect.ConnectionString);

// Pass the DbConnectionStringBuilder an existing
// connection string, and you can retrieve and
// modify any of the elements.
builder.ConnectionString = "server=(local);initial catalog=AdventureWorks";
builder["Server"] = ".";

// Setting the indexer adds the value, if necessary.
builder["Integrated Security"] = true;
Console.WriteLine(builder.ConnectionString);
Sub Main()
    Dim builder As New DbConnectionStringBuilder()
    builder.ConnectionString = "Data Source=c:\MyData\MyDb.mdb"
    builder.Add("Provider", "Microsoft.Jet.Oledb.4.0")

    ' Set up row-level locking.
    builder.Add("Jet OLEDB:Database Locking Mode", 1)

    ' Note that the DbConnectionStringBuilder class
    ' is database agnostic, and it's possible to
    ' build any type of connection string using
    ' this class.
    ' Notice that the ConnectionString property may have been
    ' formatted by the DbConnectionStringBuilder class.

    Dim oledbConnect As New _
        OleDbConnection(builder.ConnectionString)
    Console.WriteLine(oledbConnect.ConnectionString)

    ' Use the same DbConnectionStringBuilder to create
    ' a SqlConnection object.
    builder.Clear()
    builder.Add("integrated security", True)
    builder.Add("Initial Catalog", "AdventureWorks")
    builder.Add("Data Source", "(local)")

    Dim sqlConnect As New SqlConnection(builder.ConnectionString)
    Console.WriteLine(sqlConnect.ConnectionString)

    ' Pass the DbConnectionStringBuilder an existing
    ' connection string, and you can retrieve and
    ' modify any of the elements.
    builder.ConnectionString = "server=(local);initial catalog=AdventureWorks"
    builder.Item("Server") = "."

    ' The Item property is the default for the class,
    ' and setting the Item property adds the value if
    ' necessary.
    builder("Integrated Security") = True
    Console.WriteLine(builder.ConnectionString)

    Console.WriteLine("Press Enter to finish.")
    Console.ReadLine()
End Sub

Commenti

La classe DbConnectionStringBuilder fornisce la classe base da cui derivano i generatori di stringhe di connessione fortemente tipizzato (SqlConnectionStringBuilder, OleDbConnectionStringBuildere così via). I generatori di stringhe di connessione consentono agli sviluppatori di creare a livello di codice stringhe di connessione sintatticamente corrette e analizzare e ricompilare le stringhe di connessione esistenti.

Il DbConnectionStringBuilder è stato definito in modo indipendente dal database. A causa dell'aggiunta dello spazio dei nomi System.Data.Common, gli sviluppatori richiedono una classe base in cui possono programmare per creare stringhe di connessione che possono funzionare su un database arbitrario. Pertanto, la classe DbConnectionStringBuilder consente agli utenti di assegnare coppie chiave/valore arbitrarie e di passare la stringa di connessione risultante a un provider fortemente tipizzato. Tutti i provider di dati inclusi come parte di .NET offrono una classe fortemente tipizzata che eredita da DbConnectionStringBuilder: SqlConnectionStringBuilder, OracleConnectionStringBuilder, OdbcConnectionStringBuildere OleDbConnectionStringBuilder.

È possibile compilare, assegnare e modificare le stringhe di connessione per qualsiasi provider arbitrario. Per i provider che supportano coppie chiave/valore specifiche, il generatore di stringhe di connessione fornisce proprietà fortemente tipizzate corrispondenti alle coppie note. Per i provider che richiedono la possibilità di supportare valori sconosciuti, è anche possibile fornire coppie chiave/valore arbitrarie.

La classe DbConnectionStringBuilder implementa l'interfaccia ICustomTypeDescriptor. Ciò significa che la classe funziona con le finestre di progettazione di Visual Studio in fase di progettazione. Quando gli sviluppatori usano la finestra di progettazione per compilare set di dati fortemente tipizzati e connessioni fortemente tipizzate all'interno di Visual Studio, la classe generatore di stringhe di connessione fortemente tipizzata visualizza le proprietà associate al relativo tipo e include convertitori che possono eseguire il mapping dei valori comuni per le chiavi note.

Se è necessario creare stringhe di connessione come parte delle applicazioni, usare la classe DbConnectionStringBuilder o una delle relative derivate fortemente tipate per compilare e modificare le stringhe di connessione. La classe DbConnectionStringBuilder semplifica anche la gestione delle stringhe di connessione archiviate in un file di configurazione dell'applicazione.

È possibile creare stringhe di connessione usando una classe di generatore di stringhe di connessione fortemente tipizzata o la classe DbConnectionStringBuilder. Il DbConnectionStringBuilder non esegue alcun controllo per le coppie chiave/valore valide. Pertanto, è possibile creare stringhe di connessione non valide quando si usa questa classe. Il SqlConnectionStringBuilder supporta solo coppie chiave/valore supportate da SQL Server; il tentativo di aggiungere coppie non valide genererà un'eccezione.

Sia il metodo Add che Item[] i casi di gestione delle proprietà in cui un attore malintenzionato tenta di inserire voci dannose. Ad esempio, il codice seguente esegue correttamente l'escape della coppia chiave/valore annidata:

Dim builder As New System.Data.Common.DbConnectionStringBuilder
builder("Data Source") = "(local)"
builder("integrated sSecurity") = True
builder("Initial Catalog") = "AdventureWorks;NewValue=Bad"
System.Data.Common.DbConnectionStringBuilder builder = new System.Data.Common.DbConnectionStringBuilder();
builder["Data Source"] = "(local)";
builder["integrated Security"] = true;
builder["Initial Catalog"] = "AdventureWorks;NewValue=Bad";

Il risultato è la stringa di connessione seguente che gestisce il valore non valido in modo sicuro:

data source=(local);integrated security=True;
initial catalog="AdventureWorks;NewValue=Bad"

Costruttori

DbConnectionStringBuilder()

Inizializza una nuova istanza della classe DbConnectionStringBuilder.

DbConnectionStringBuilder(Boolean)

Inizializza una nuova istanza della classe DbConnectionStringBuilder, utilizzando facoltativamente le regole ODBC per i valori tra virgolette.

Proprietà

BrowsableConnectionString

Ottiene o imposta un valore che indica se la proprietà ConnectionString è visibile nelle finestre di progettazione di Visual Studio.

ConnectionString

Ottiene o imposta la stringa di connessione associata al DbConnectionStringBuilder.

Count

Ottiene il numero corrente di chiavi contenute nella proprietà ConnectionString.

IsFixedSize

Ottiene un valore che indica se il DbConnectionStringBuilder ha una dimensione fissa.

IsReadOnly

Ottiene un valore che indica se il DbConnectionStringBuilder è di sola lettura.

Item[String]

Ottiene o imposta il valore associato alla chiave specificata.

Keys

Ottiene un ICollection che contiene le chiavi nel DbConnectionStringBuilder.

Values

Ottiene un ICollection che contiene i valori nella DbConnectionStringBuilder.

Metodi

Add(String, Object)

Aggiunge una voce con la chiave e il valore specificati nella DbConnectionStringBuilder.

AppendKeyValuePair(StringBuilder, String, String, Boolean)

Fornisce un modo efficiente e sicuro per aggiungere una chiave e un valore a un oggetto StringBuilder esistente.

AppendKeyValuePair(StringBuilder, String, String)

Fornisce un modo efficiente e sicuro per aggiungere una chiave e un valore a un oggetto StringBuilder esistente.

Clear()

Cancella il contenuto dell'istanza di DbConnectionStringBuilder.

ClearPropertyDescriptors()

Cancella l'insieme di oggetti PropertyDescriptor nell'oggetto associato DbConnectionStringBuilder.

ContainsKey(String)

Determina se il DbConnectionStringBuilder contiene una chiave specifica.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
EquivalentTo(DbConnectionStringBuilder)

Confronta le informazioni di connessione in questo oggetto DbConnectionStringBuilder con le informazioni di connessione nell'oggetto fornito.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetProperties(Hashtable)

Riempie un Hashtable fornito con informazioni su tutte le proprietà di questa DbConnectionStringBuilder.

GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
Remove(String)

Rimuove la voce con la chiave specificata dall'istanza di DbConnectionStringBuilder.

ShouldSerialize(String)

Indica se la chiave specificata esiste in questa istanza di DbConnectionStringBuilder.

ToString()

Restituisce la stringa di connessione associata a questa DbConnectionStringBuilder.

TryGetValue(String, Object)

Recupera un valore corrispondente alla chiave fornita da questo DbConnectionStringBuilder.

Implementazioni dell'interfaccia esplicita

ICollection.CopyTo(Array, Int32)

Copia gli elementi del ICollection in un Array, a partire da un particolare indice Array.

ICollection.IsSynchronized

Ottiene un valore che indica se l'accesso al ICollection è sincronizzato (thread-safe).

ICollection.SyncRoot

Ottiene un oggetto che può essere utilizzato per sincronizzare l'accesso al ICollection.

ICustomTypeDescriptor.GetAttributes()

Restituisce una raccolta di attributi personalizzati per questa istanza di un componente.

ICustomTypeDescriptor.GetClassName()

Restituisce il nome della classe di questa istanza di un componente.

ICustomTypeDescriptor.GetComponentName()

Restituisce il nome di questa istanza di un componente.

ICustomTypeDescriptor.GetConverter()

Restituisce un convertitore di tipi per questa istanza di un componente.

ICustomTypeDescriptor.GetDefaultEvent()

Restituisce l'evento predefinito per questa istanza di un componente.

ICustomTypeDescriptor.GetDefaultProperty()

Restituisce la proprietà predefinita per questa istanza di un componente.

ICustomTypeDescriptor.GetEditor(Type)

Restituisce un editor del tipo specificato per questa istanza di un componente.

ICustomTypeDescriptor.GetEvents()

Restituisce gli eventi per questa istanza di un componente.

ICustomTypeDescriptor.GetEvents(Attribute[])

Restituisce gli eventi per questa istanza di un componente utilizzando la matrice di attributi specificata come filtro.

ICustomTypeDescriptor.GetProperties()

Restituisce le proprietà per questa istanza di un componente.

ICustomTypeDescriptor.GetProperties(Attribute[])

Restituisce le proprietà per questa istanza di un componente utilizzando la matrice di attributi come filtro.

ICustomTypeDescriptor.GetPropertyOwner(PropertyDescriptor)

Restituisce un oggetto che contiene la proprietà descritta dal descrittore di proprietà specificato.

IDictionary.Add(Object, Object)

Aggiunge un elemento con la chiave e il valore specificati all'oggetto IDictionary.

IDictionary.Contains(Object)

Determina se l'oggetto IDictionary contiene un elemento con la chiave specificata.

IDictionary.GetEnumerator()

Restituisce un oggetto IDictionaryEnumerator per l'oggetto IDictionary.

IDictionary.IsFixedSize

Ottiene un valore che indica se l'oggetto IDictionary ha una dimensione fissa.

IDictionary.IsReadOnly

Ottiene un valore che indica se il IDictionary è di sola lettura.

IDictionary.Item[Object]

Ottiene o imposta l'elemento con la chiave specificata.

IDictionary.Remove(Object)

Rimuove l'elemento con la chiave specificata dall'oggetto IDictionary.

IEnumerable.GetEnumerator()

Restituisce un enumeratore che scorre un insieme.

Metodi di estensione

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un IEnumerable al tipo specificato.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un IEnumerable in base a un tipo specificato.

AsParallel(IEnumerable)

Abilita la parallelizzazione di una query.

AsQueryable(IEnumerable)

Converte un IEnumerable in un IQueryable.

Si applica a

Vedi anche