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 中建置強型別 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。 |
方法
明確介面實作
擴充方法
Cast<TResult>(IEnumerable) |
將 IEnumerable 的項目轉換成指定的型別。 |
OfType<TResult>(IEnumerable) |
根據指定的型別來篩選 IEnumerable 的項目。 |
AsParallel(IEnumerable) |
啟用查詢的平行化作業。 |
AsQueryable(IEnumerable) |
將 IEnumerable 轉換成 IQueryable。 |
適用於
另請參閱
- ADO.NET 中的連接字串
- ADO.NET 概觀 \(部分機器翻譯\)