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 属性传递给强类型连接类的构造函数。 这不是必需的;该代码还可以创建单个强类型连接字符串生成器实例。 该示例还分析现有连接字符串,并演示了各种操作连接字符串的内容的方法。

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

注解

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

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

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

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, Boolean)

提供一种高效且安全的方法来将键和值追加到现有 StringBuilder 对象。

AppendKeyValuePair(StringBuilder, String, String)

提供一种高效且安全的方法来将键和值追加到现有 StringBuilder 对象。

Clear()

清除 DbConnectionStringBuilder 实例的内容。

ClearPropertyDescriptors()

清除关联 DbConnectionStringBuilderPropertyDescriptor 对象的集合。

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)

从特定 Array 索引开始,将 ICollection 的元素复制到 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

适用于

另请参阅