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 提供基類,強型別連接字串產生器 SqlConnectionStringBuilder (、 OleDbConnectionStringBuilder 等) 衍生。 連接字串產生器可讓開發人員以程式設計方式建立語法正確的連接字串,並剖析和重建現有的連接字串。

DbConnectionStringBuilder已以資料庫無關的方式定義 。 由於新增 System.Data.Common 命名空間,開發人員需要基類,才能進行程式設計,以建置可針對任意資料庫運作的連接字串。 因此,類別 DbConnectionStringBuilder 可讓使用者指派任意的索引鍵/值組,並將產生的連接字串傳遞至強型別提供者。 包含在.NET Framework的所有資料提供者都提供繼承自 DbConnectionStringBuilder 的強型別類別: SqlConnectionStringBuilderOracleConnectionStringBuilderOdbcConnectionStringBuilderOleDbConnectionStringBuilder

開發人員可以為任何任意提供者建置、指派和編輯連接字串。 對於支援特定索引鍵/值組的提供者,連接字串產生器會提供對應至已知配對的強型別屬性。 為了支援需要支援未知值的提供者,開發人員也可以提供任意的索引鍵/值組。

DbConnectionStringBuilder 類別會實作 ICustomTypeDescriptor 介面。 這表示類別在設計階段與 Visual Studio 設計工具搭配運作。 當開發人員使用設計工具在 Visual Studio 中建置強型別 DataSet 和強型別連接時,強型別連接字串產生器類別會顯示與其類型相關聯的屬性,而且也會有轉換器來對應已知索引鍵的通用值。

開發人員需要建立連接字串作為應用程式的一部分,可以使用 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)

選擇性地使用 ODBC 規則將值以引號括住,進而初始化 DbConnectionStringBuilder 類別的新執行個體。

屬性

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

適用於

另請參閱