1 out of 1 rated this helpful - Rate this topic

OdbcConnectionStringBuilder Class

Provides a simple way to create and manage the contents of connection strings used by the OdbcConnection class.

System.Object
  System.Data.Common.DbConnectionStringBuilder
    System.Data.Odbc.OdbcConnectionStringBuilder

Namespace:  System.Data.Odbc
Assembly:  System.Data (in System.Data.dll)
public sealed class OdbcConnectionStringBuilder : DbConnectionStringBuilder

The OdbcConnectionStringBuilder type exposes the following members.

  Name Description
Public method OdbcConnectionStringBuilder() Initializes a new instance of the OdbcConnectionStringBuilder class.
Public method OdbcConnectionStringBuilder(String) Initializes a new instance of the OdbcConnectionStringBuilder class. The provided connection string provides the data for the instance's internal connection information.
Top
  Name Description
Public property BrowsableConnectionString Gets or sets a value that indicates whether the ConnectionString property is visible in Visual Studio designers. (Inherited from DbConnectionStringBuilder.)
Public property ConnectionString Gets or sets the connection string associated with the DbConnectionStringBuilder. (Inherited from DbConnectionStringBuilder.)
Public property Count Gets the current number of keys that are contained within the ConnectionString property. (Inherited from DbConnectionStringBuilder.)
Public property Driver Gets or sets the name of the ODBC driver associated with the connection.
Public property Dsn Gets or sets the name of the data source name (DSN) associated with the connection.
Public property IsFixedSize Gets a value that indicates whether the DbConnectionStringBuilder has a fixed size. (Inherited from DbConnectionStringBuilder.)
Public property IsReadOnly Gets a value that indicates whether the DbConnectionStringBuilder is read-only. (Inherited from DbConnectionStringBuilder.)
Public property Item Gets or sets the value associated with the specified key. In C#, this property is the indexer. (Overrides DbConnectionStringBuilder.Item[String].)
Public property Keys Gets an ICollection that contains the keys in the OdbcConnectionStringBuilder. (Overrides DbConnectionStringBuilder.Keys.)
Public property Values Gets an ICollection that contains the values in the DbConnectionStringBuilder. (Inherited from DbConnectionStringBuilder.)
Top
  Name Description
Public method Add Adds an entry with the specified key and value into the DbConnectionStringBuilder. (Inherited from DbConnectionStringBuilder.)
Public method Clear Clears the contents of the OdbcConnectionStringBuilder instance. (Overrides DbConnectionStringBuilder.Clear().)
Protected method ClearPropertyDescriptors Clears the collection of PropertyDescriptor objects on the associated DbConnectionStringBuilder. (Inherited from DbConnectionStringBuilder.)
Public method ContainsKey Determines whether the OdbcConnectionStringBuilder contains a specific key. (Overrides DbConnectionStringBuilder.ContainsKey(String).)
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Public method EquivalentTo Compares the connection information in this DbConnectionStringBuilder object with the connection information in the supplied object. (Inherited from DbConnectionStringBuilder.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Protected method GetProperties Fills a supplied Hashtable with information about all the properties of this DbConnectionStringBuilder. (Inherited from DbConnectionStringBuilder.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method Remove Removes the entry with the specified key from the OdbcConnectionStringBuilder instance. (Overrides DbConnectionStringBuilder.Remove(String).)
Public method ShouldSerialize Indicates whether the specified key exists in this DbConnectionStringBuilder instance. (Inherited from DbConnectionStringBuilder.)
Public method ToString Returns the connection string associated with this DbConnectionStringBuilder. (Inherited from DbConnectionStringBuilder.)
Public method TryGetValue Retrieves a value corresponding to the supplied key from this OdbcConnectionStringBuilder. (Overrides DbConnectionStringBuilder.TryGetValue(String, Object).)
Top
  Name Description
Explicit interface implemetation Private method ICollection.CopyTo Copies the elements of the ICollection to an Array, starting at a particular Array index. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private property ICollection.IsSynchronized Gets a value indicating whether access to the ICollection is synchronized (thread safe). (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private property ICollection.SyncRoot Gets an object that can be used to synchronize access to the ICollection. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method ICustomTypeDescriptor.GetAttributes Returns a collection of custom attributes for this instance of a component. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method ICustomTypeDescriptor.GetClassName Returns the class name of this instance of a component. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method ICustomTypeDescriptor.GetComponentName Returns the name of this instance of a component. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method ICustomTypeDescriptor.GetConverter Returns a type converter for this instance of a component. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method ICustomTypeDescriptor.GetDefaultEvent Returns the default event for this instance of a component. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method ICustomTypeDescriptor.GetDefaultProperty Returns the default property for this instance of a component. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method ICustomTypeDescriptor.GetEditor Returns an editor of the specified type for this instance of a component. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method ICustomTypeDescriptor.GetEvents() Returns the events for this instance of a component. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method ICustomTypeDescriptor.GetEvents(Attribute[]) Returns the events for this instance of a component using the specified attribute array as a filter. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method ICustomTypeDescriptor.GetProperties() Returns the properties for this instance of a component. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method ICustomTypeDescriptor.GetProperties(Attribute[]) Returns the properties for this instance of a component using the attribute array as a filter. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method ICustomTypeDescriptor.GetPropertyOwner Returns an object that contains the property described by the specified property descriptor. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method IDictionary.Add Adds an element with the provided key and value to the IDictionary object. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method IDictionary.Contains Determines whether the IDictionary object contains an element with the specified key. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method IDictionary.GetEnumerator Returns an IDictionaryEnumerator object for the IDictionary object. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private property IDictionary.Item Gets or sets the element with the specified key. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method IDictionary.Remove Removes the element with the specified key from the IDictionary object. (Inherited from DbConnectionStringBuilder.)
Explicit interface implemetation Private method IEnumerable.GetEnumerator Returns an enumerator that iterates through a collection. (Inherited from DbConnectionStringBuilder.)
Top

The connection string builders let developers programmatically create syntactically correct connection strings, and parse and rebuild existing connection strings, using properties and methods of the class. The connection string builder provides strongly typed properties corresponding to the known key/value pairs allowed by ODBC connections, and developers can add arbitrary key/value pairs for any other connection string values.

Developers needing to create connection strings as part of applications can use the OdbcConnectionStringBuilder class to build and modify connection strings. The class also makes it easy to manage connection strings stored in an application configuration file. OdbcConnectionStringBuilder performs checks only for the limited set of known key/value pairs. Therefore, this class can be used to create invalid connection strings. The following table lists the specific known keys together with their corresponding properties within the OdbcConnectionStringBuilder class, and their default values. Besides these specific values, developers can add any key/value pairs to the collection that is contained within the OdbcConnectionStringBuilder instance.

Key

Property

Comment

Default value

Driver

Driver

Developers should not include the braces surrounding the driver name when they set the Driver property. The OdbcConnectionStringBuilder instance adds braces as needed.

Empty string

DSN

Dsn

Empty string

If any value (other than the Driver value) within the connection string contains a semicolon (;), the OdbcConnectionStringBuilder surrounds the value with quotation marks in the connection string. In order to avoid this issue with the Driver value that frequently contains a semicolon, the OdbcConnectionStringBuilder class always surrounds this value with braces. The ODBC specification indicates that driver values that contain semicolons must be surrounded with braces, and this class handles this for you.

The Item property handles attempts to insert malicious code. For example, the following code, using the default Item property (the indexer, in C#) correctly escapes the nested key/value pair.

[Visual Basic]

Dim builder As _
 New System.Data.Odbc.OdbcConnectionStringBuilder
' Take advantage of the Driver property. 
builder.Driver = "SQL Server"
builder("Server") = "MyServer;NewValue=Bad"
Console.WriteLine(builder.ConnectionString)

[C#]

System.Data.Odbc.OdbcConnectionStringBuilder builder = 
  new System.Data.Odbc.OdbcConnectionStringBuilder();
// Take advantage of the Driver property. 
builder.Driver = "SQL Server";
builder["Server"] = "MyServer;NewValue=Bad";
Console.WriteLine(builder.ConnectionString);

The result is the following connection string that handles the invalid value in a safe manner:

Driver={SQL Server};Server="MyServer;NewValue=Bad"

The following console application builds connection strings for several ODBC databases. First, the example creates a connection string for a Microsoft Access database. It then creates a connection string for an IBM DB2 database. The example also parses an existing connection string, and demonstrates various ways of manipulating the contents of the connection string.

Note Note

This example includes a password to demonstrate how OdbcConnectionStringBuilder works with connection strings. In your applications, we recommend that you use Windows Authentication. If you must use a password, do not include a hard-coded password in your application.


using System.Data.Odbc;

class Program
{
    static void Main()
    {
        OdbcConnectionStringBuilder builder = 
            new OdbcConnectionStringBuilder();
        builder.Driver = "Microsoft Access Driver (*.mdb)";

        // Call the Add method to explicitly add key/value
        // pairs to the internal collection.
        builder.Add("Dbq", "C:\\info.mdb");
        builder.Add("Uid", "Admin");
        builder.Add("Pwd", "pass!word1");

        Console.WriteLine(builder.ConnectionString);
        Console.WriteLine();

        // Clear current values and reset known keys to their
        // default values.
        builder.Clear();

        // Pass the OdbcConnectionStringBuilder an existing 
        // connection string, and you can retrieve and
        // modify any of the elements.
        builder.ConnectionString =
            "driver={IBM DB2 ODBC DRIVER};Database=SampleDB;" +
            "hostname=SampleServerName;port=SamplePortNum;" +
            "protocol=TCPIP;uid=Admin;pwd=pass!word1";

        Console.WriteLine("protocol = " 
            + builder["protocol"].ToString());
        Console.WriteLine();

        // Modify existing items.
        builder["uid"] = "NewUser";
        builder["pwd"] = "Pass@word2";

        // Call the Remove method to remove items from 
        // the collection of key/value pairs.
        builder.Remove("port");

        // Note that calling Remove on a nonexistent item does not
        // throw an exception.
        builder.Remove("BadItem");
        Console.WriteLine(builder.ConnectionString);
        Console.WriteLine();

        // Setting the indexer adds the associated value, if 
        // necessary.
        builder["NewKey"] = "newValue";
        Console.WriteLine(builder.ConnectionString);

        Console.WriteLine("Press Enter to finish.");
        Console.ReadLine();
    }
}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ