OleDbConnection.ConnectionString 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置用于打数据库的字符串。
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 Info
true
(不建议) 。 为了保持高级别的安全性,强烈建议使用Integrated Security
设置为 的 关键字 (keyword)Persist Security Info
false
。
可以使用 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 Timeout
、 Persist Security Info
或 OLE 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
参数。