DbConnectionStringBuilder 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供强类型化连接字符串生成器的基类。
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提供基类,强类型化连接字符串生成器 (SqlConnectionStringBuilder、 OleDbConnectionStringBuilder等) 派生。 连接字符串生成器允许开发人员以编程方式创建语法正确的连接字符串,并分析和重新生成现有连接字符串。
DbConnectionStringBuilder已以与数据库无关的方式定义 。 由于添加了 System.Data.Common 命名空间,因此开发人员需要一个基类,他们可以根据该基类进行编程,以便生成可以针对任意数据库工作的连接字符串。 因此, DbConnectionStringBuilder 类允许用户分配任意键/值对,并将生成的连接字符串传递给强类型提供程序。 作为 .NET Framework的一部分包含的所有数据提供程序都提供继承自 DbConnectionStringBuilder的强类型类:SqlConnectionStringBuilder、OracleConnectionStringBuilder、 OdbcConnectionStringBuilder和 OleDbConnectionStringBuilder。
开发人员可以为任意提供程序生成、分配和编辑连接字符串。 对于支持特定键/值对的提供程序,连接字符串生成器提供与已知对对应的强类型属性。 为了支持需要支持未知值的提供程序,开发人员还可以提供任意键/值对。
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。 |
方法
显式接口实现
扩展方法
Cast<TResult>(IEnumerable) |
将 IEnumerable 的元素强制转换为指定的类型。 |
OfType<TResult>(IEnumerable) |
根据指定类型筛选 IEnumerable 的元素。 |
AsParallel(IEnumerable) |
启用查询的并行化。 |
AsQueryable(IEnumerable) |
将 IEnumerable 转换为 IQueryable。 |