OleDbConnection.ConnectionString 属性

定义

获取或设置用于打数据库的字符串。

public:
 virtual property System::String ^ ConnectionString { System::String ^ get(); void set(System::String ^ value); };
public:
 property System::String ^ ConnectionString { System::String ^ get(); void set(System::String ^ value); };
[System.ComponentModel.SettingsBindable(true)]
public override string ConnectionString { get; set; }
[System.Data.DataSysDescription("OleDbConnection_ConnectionString")]
public string ConnectionString { get; set; }
public override string ConnectionString { get; set; }
[<System.ComponentModel.SettingsBindable(true)>]
member this.ConnectionString : string with get, set
[<System.Data.DataSysDescription("OleDbConnection_ConnectionString")>]
member this.ConnectionString : string with get, set
member this.ConnectionString : string with get, set
Public Overrides Property ConnectionString As String
Public Property ConnectionString As String

属性值

OLE DB 提供程序连接字符串,它包括建立初始连接所必需的数据源名称和其他参数。 默认值为一个空字符串。

实现

属性

例外

提供了无效的连接字符串参数或未提供所需的连接字符串参数。

示例

以下示例创建 并在 OleDbConnection 连接字符串 中设置其一些属性。

static void OpenConnection(string connectionString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        try
        {
            connection.Open();
            Console.WriteLine("ServerVersion: {0} \nDataSource: {1}",
                connection.ServerVersion, connection.DataSource);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        // The connection is automatically closed when the
        // code exits the using block.
    }
}
Public Sub OpenConnection(ByVal connectionString As String)

    Using connection As New OleDbConnection(connectionString)
        Try
            connection.Open()
            Console.WriteLine("Server Version: {0} DataSource: {1}", _
                connection.ServerVersion, connection.DataSource)
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
        ' The connection is automatically closed when the
        ' code exits the Using block.
    End Using
End Sub

注解

ConnectionString设计为尽可能匹配 OLE DB 连接字符串 格式,但有以下例外情况:

  • 需要“Provider = value ”子句。 但是,不能使用“Provider = MSDASQL”,因为适用于 OLE DB 的.NET Framework数据提供程序不支持 OLE DB Provider for ODBC (MSDASQL) 。 若要访问 ODBC 数据源,请使用 OdbcConnection 命名空间中的 System.Data.Odbc 对象。

  • 与 ODBC 或 ADO 不同,如果 Persist Security Info 设置为false默认) ,则返回的 (连接字符串与用户集 ConnectionString相同,减去安全信息。 .NET Framework Data Provider for OLE DB 不会在连接字符串中保留或返回密码,除非将关键字 (keyword) 设置为 Persist Security Infotrue (不建议) 。 为了保持高级别的安全性,强烈建议使用Integrated Security设置为 的 关键字 (keyword) Persist Security Infofalse

可以使用 ConnectionString 属性连接到各种数据源。 以下示例演示了多个可能的连接字符串。

"Provider=MSDAORA; Data Source=ORACLE8i7;Persist Security Info=False;Integrated Security=Yes"

"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\bin\LocalAccess40.mdb"

"Provider=SQLOLEDB;Data Source=(local);Integrated Security=SSPI"

Data Source 如果在连接字符串中未指定关键字 (keyword) ,则提供程序将尝试连接到本地服务器(如果有)。

有关连接字符串的详细信息,请参阅将连接字符串关键字用于SQL Server Native Client

ConnectionString仅当连接关闭时,才能设置 属性。 许多连接字符串值都具有相应的只读属性。 设置连接字符串时,这些属性将更新,检测到错误时除外。 在这种情况下,不会更新任何属性。 OleDbConnection 属性仅返回 包含在 中的 ConnectionString那些设置。

在关闭的连接上重置 ConnectionString 会重置所有连接字符串值和相关属性。 这包括密码。 例如,如果设置了包含“Initial Catalog= AdventureWorks”的连接字符串,然后将连接字符串重置为“Provider= SQLOLEDB;数据源= MySQLServer;IntegratedSecurity=SSPI“, Database 属性不再设置为 AdventureWorks。 (连接字符串的初始目录值对应于 Database 属性。)

设置 属性时,将执行连接字符串的初步验证。 如果字符串中包含 、 Connect TimeoutPersist Security InfoOLE DB Services 的值Provider,则检查这些值。 当应用程序调用 方法时Open,将完全验证连接字符串。 如果连接字符串包含无效或不受支持的属性,则会生成运行时异常,例如 ArgumentException

注意

可以在通用数据链接 (UDL) 文件中为 提供连接信息 OleDbConnection ,但应避免这样做。 UDL 文件未加密,并且以明文形式公开连接字符串信息。 因为 UDL 文件对您的应用程序来说是一个基于文件的外部资源,所以无法使用 .NET Framework 保护该文件。

连接字符串的基本格式包括一系列用分号分隔的关键字 (keyword) /值对。 每个关键字和它的值之间用等号 (=) 连接。 若要包含包含分号、单引号字符或双引号字符的值,必须将该值括在双引号中。 如果值同时包含分号和双引号字符,则可以将该值括在单引号中。 如果值以双引号字符开头,单引号也很有用。 相反,如果值以单引号开头,则可以使用双引号。 如果值同时包含单引号和双引号字符,则每次值内发生时,用于括住值的引号字符都必须加倍。

若要在字符串值中包含前面或尾随空格,必须将该值括在单引号或双引号中。 即使用引号括起来,整数、布尔值或枚举值周围的任何前导或尾随空格也会被忽略。 但是,将保留字符串文本关键字 (keyword) 或值中的空格。 例如,可以在连接字符串中使用单引号或双引号,而无需使用分隔符 (,Data Source= my'Server或者 Data Source= my"Server) 除非引号字符是值中的第一个或最后一个字符。

若要在关键字 (keyword) 或值中包含等号 (=) ,必须在等号前面加上另一个等号。 例如,在假设连接字符串

"key==word=value"

关键字 (keyword) 为“key=word”,值为“value”。

如果在连接字符串中多次发生关键字 (keyword) =值对中的特定关键字 (keyword) ,则列出的最后一个匹配项将用于值集。

关键字不区分大小写。

注意

根据用户输入构造连接字符串时,应小心谨慎,例如,从对话框中检索用户 ID 和密码信息并将其追加到连接字符串。 应用程序应确保用户不能在这些值中嵌入其他连接字符串参数,例如,输入密码作为“validpassword;database= somedb“,尝试附加到其他数据库。 如果使用扩展属性连接字符串参数进行 OLE DB 连接,请避免传递用户 ID 和密码,因为应避免在可能的情况下以明文形式存储用户 ID 和密码,并且 的默认设置Persist Security Info= false不会影响Extended Properties参数。

适用于

另请参阅