DbConnectionStringBuilder 类

定义

提供强类型化连接字符串生成器的基类。

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
继承
DbConnectionStringBuilder
派生
实现

示例

以下控制台应用程序生成两个连接字符串,一个用于 Microsoft Jet 数据库,一个用于SQL Server数据库。 在每种情况下,代码都使用泛型DbConnectionStringBuilder类创建连接字符串,然后将 实例的 DbConnectionStringBuilder 属性传递给ConnectionString强类型连接类的构造函数。 这不是必需的;代码还可能创建了单个强类型连接字符串生成器实例。 该示例还分析现有连接字符串,并演示了操作连接字符串内容的各种方法。

static void Main()
{
    DbConnectionStringBuilder builder =
        new DbConnectionStringBuilder();
    builder.ConnectionString = @"Data Source=c:\MyData\MyDb.mdb";
    builder.Add("Provider", "Microsoft.Jet.Oledb.4.0");
    builder.Add("Jet OLEDB:Database Password", "*******");
    builder.Add("Jet OLEDB:System Database",
        @"c:\MyData\Workgroup.mdb");
    // 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 may 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);user id=*******;" +
        "password=*******;initial catalog=AdventureWorks";
    builder["Server"] = ".";
    builder.Remove("User ID");

    // Note that calling Remove on a nonexistent item doesn't
    // throw an exception.
    builder.Remove("BadItem");

    // Setting the indexer adds the value if
    // necessary.
    builder["Integrated Security"] = true;
    builder.Remove("password");
    builder["User ID"] = "Hello";
    Console.WriteLine(builder.ConnectionString);

    Console.WriteLine("Press Enter to finish.");
    Console.ReadLine();
}
Sub Main()
    Dim builder As New DbConnectionStringBuilder()
    builder.ConnectionString = "Data Source=c:\MyData\MyDb.mdb"
    builder.Add("Provider", "Microsoft.Jet.Oledb.4.0")
    builder.Add("Jet OLEDB:Database Password", "*******")
    builder.Add("Jet OLEDB:System Database", _
        "c:\MyData\Workgroup.mdb")

    ' 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);user id=*******;" & _
        "password=*******;initial catalog=AdventureWorks"
    builder.Item("Server") = "."
    builder.Remove("User ID")

    ' Note that calling Remove on a nonexistent item doesn't
    ' throw an exception.
    builder.Remove("BadItem")

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

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

注解

DbConnectionStringBuilder 提供强类型连接字符串生成器 (SqlConnectionStringBuilderOleDbConnectionStringBuilder等) 派生的基类。 连接字符串生成器允许开发人员以编程方式创建语法正确的连接字符串,并分析和重新生成现有连接字符串。

DbConnectionStringBuilder已以与数据库无关的方式定义 。 由于添加了 System.Data.Common 命名空间,开发人员需要一个基类,他们可以基于该基类进行编程,以便生成可用于任意数据库的连接字符串。 因此, DbConnectionStringBuilder 类允许用户分配任意键/值对,并将生成的连接字符串传递给强类型提供程序。 作为.NET Framework一部分包含的所有数据提供程序都提供继承自 DbConnectionStringBuilder的强类型类:SqlConnectionStringBuilderOracleConnectionStringBuilderOdbcConnectionStringBuilderOleDbConnectionStringBuilder

开发人员可以为任何任意提供程序生成、分配和编辑连接字符串。 对于支持特定键/值对的提供程序,连接字符串生成器提供与已知对对应的强类型属性。 为了支持需要支持未知值的提供程序,开发人员还可以提供任意键/值对。

DbConnectionStringBuilder 类实现 ICustomTypeDescriptor 接口。 这意味着 类在设计时可与 Visual Studio 设计器配合使用。 当开发人员使用设计器在 Visual Studio 中生成强类型数据集和强类型连接时,强类型连接字符串生成器类将显示与其类型关联的属性,并且还将具有可映射已知键的通用值的转换器。

需要创建连接字符串作为应用程序的一部分的开发人员可以使用 DbConnectionStringBuilder 类或其强类型派生之一来生成和修改连接字符串。 类 DbConnectionStringBuilder 还便于管理存储在应用程序配置文件中的连接字符串。

开发人员可以使用强类型连接字符串生成器类创建连接字符串,也可以使用 DbConnectionStringBuilder 类。 不 DbConnectionStringBuilder 检查有效的键/值对。 因此,使用此类可能会创建出无效的连接字符串。 SqlConnectionStringBuilder仅支持 SQL Server 支持的键/值对;尝试添加无效对将引发异常。

Add方法和Item[]属性句柄都尝试插入恶意条目。 例如,以下代码正确转义嵌套键/值对:

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";

结果为以下连接字符串,该字符串以安全方式处理无效值:

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

构造函数

DbConnectionStringBuilder()

初始化 DbConnectionStringBuilder 类的新实例。

DbConnectionStringBuilder(Boolean)

初始化 DbConnectionStringBuilder 类的新实例,可以选择使用 ODBC 规则来引用值。

属性

BrowsableConnectionString

获取或设置一个值,该值指示 ConnectionString 属性是否在 Visual Studio 设计器中可见。

ConnectionString

获取或设置与 DbConnectionStringBuilder 相关联的连接字符串。

Count

获取属性 ConnectionString 中包含的键的当前数目。

IsFixedSize

获取一个值,该值指示 DbConnectionStringBuilder 是否具有固定大小。

IsReadOnly

获取一个值,该值指示 DbConnectionStringBuilder 是否为只读。

Item[String]

获取或设置与指定的键关联的值。

Keys

获取包含 ICollection 中的键的 DbConnectionStringBuilder

Values

获取一个包含 ICollection 中的值的 DbConnectionStringBuilder

方法

Add(String, Object)

将带有指定键和值的条目添加到 DbConnectionStringBuilder 中。

AppendKeyValuePair(StringBuilder, String, String)

提供了一种有效而安全的方法,用于将键和值附加到现有的 StringBuilder 对象中。

AppendKeyValuePair(StringBuilder, String, String, Boolean)

提供了一种有效而安全的方法,用于将键和值附加到现有的 StringBuilder 对象中。

Clear()

清除 DbConnectionStringBuilder 实例的内容。

ClearPropertyDescriptors()

清除关联的 DbConnectionStringBuilder 上的 PropertyDescriptor 对象集合。

ContainsKey(String)

确定 DbConnectionStringBuilder 是否包含特定键。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
EquivalentTo(DbConnectionStringBuilder)

将此 DbConnectionStringBuilder 对象中的连接信息与提供的对象中的连接信息进行比较。

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetProperties(Hashtable)

使用有关此 DbConnectionStringBuilder 的所有属性的信息,填充提供的 Hashtable

GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
Remove(String)

DbConnectionStringBuilder 实例中移除具有指定的键的项。

ShouldSerialize(String)

指示此 DbConnectionStringBuilder 实例中是否存在指定的键。

ToString()

返回与此 DbConnectionStringBuilder 关联的连接字符串。

TryGetValue(String, Object)

从此 DbConnectionStringBuilder 中检索与提供的键相对应的值。

显式接口实现

ICollection.CopyTo(Array, Int32)

从特定的 ICollection 索引开始,将 Array 的元素复制到一个 Array 中。

ICollection.IsSynchronized

获取一个值,该值指示是否同步对 ICollection 的访问(线程安全)。

ICollection.SyncRoot

获取可用于同步对 ICollection 的访问的对象。

ICustomTypeDescriptor.GetAttributes()

返回此组件实例的自定义属性的集合。

ICustomTypeDescriptor.GetClassName()

返回此组件实例的类名称。

ICustomTypeDescriptor.GetComponentName()

返回某个组件的此实例的名称。

ICustomTypeDescriptor.GetConverter()

返回此组件实例的类型转换器。

ICustomTypeDescriptor.GetDefaultEvent()

返回某个组件的此实例的默认事件。

ICustomTypeDescriptor.GetDefaultProperty()

返回此组件实例的默认属性。

ICustomTypeDescriptor.GetEditor(Type)

返回此组件实例的指定类型的编辑器。

ICustomTypeDescriptor.GetEvents()

返回此组件实例的事件。

ICustomTypeDescriptor.GetEvents(Attribute[])

使用指定的属性数组作为筛选器,返回此组件实例的事件。

ICustomTypeDescriptor.GetProperties()

返回此组件实例的属性。

ICustomTypeDescriptor.GetProperties(Attribute[])

使用特性数组作为筛选器,返回此组件实例的属性。

ICustomTypeDescriptor.GetPropertyOwner(PropertyDescriptor)

返回一个对象,该对象包含指定的属性描述符所描述的属性。

IDictionary.Add(Object, Object)

IDictionary 对象中添加一个带有所提供的键和值的元素。

IDictionary.Contains(Object)

确定 IDictionary 对象是否包含具有指定键的元素。

IDictionary.GetEnumerator()

返回 IDictionary 对象的 IDictionaryEnumerator 对象。

IDictionary.IsFixedSize

获取一个值,该值指示 IDictionary 对象是否具有固定大小。

IDictionary.IsReadOnly

获取一个值,该值指示 IDictionary 是否为只读。

IDictionary.Item[Object]

获取或设置具有指定键的元素。

IDictionary.Remove(Object)

IDictionary 对象中移除具有指定键的元素。

IEnumerable.GetEnumerator()

返回循环访问集合的枚举数。

扩展方法

Cast<TResult>(IEnumerable)

IEnumerable 的元素强制转换为指定的类型。

OfType<TResult>(IEnumerable)

根据指定类型筛选 IEnumerable 的元素。

AsParallel(IEnumerable)

启用查询的并行化。

AsQueryable(IEnumerable)

IEnumerable 转换为 IQueryable

适用于

另请参阅