经常写程序,对于连接字符串多是Ctrl+C项目A的,Ctrl+v到项目B。然后稍作修改便是,只要能连接到数据库就完事。下面看一下几种常用写法。

ConnectionString 属性的设计旨在与 ODBC 连接字符串格式尽可能准确地匹配。只有连接处于关闭状态时才可以设置 ConnectionString,并且一旦设置,就会被按原样传递给驱动程序管理器和基础驱动程序。因此,ConnectionString 的语法必须与驱动程序管理器和基础驱动程序所支持的语法完全匹配。

可以使用 ConnectionString 属性连接到各种数据源。其中包括 ODBC 数据源名称 (DSN)。下面的示例阐释几个可能的连接字符串。

"Driver={SQL Server};Server=(local);Trusted_Connection=Yes;Database=AdventureWorks;"

 

"Driver={Microsoft ODBC for Oracle};Server=ORACLE8i7;Persist Security Info=False;Trusted_Connection=Yes"

 

"Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\bin\Northwind.mdb"

 

"Driver={Microsoft Excel Driver (*.xls)};DBQ=c:\bin\book1.xls"

 

"Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=c:\bin"

 

"DSN=dsnname"

 

Note注意

用于 ODBC 的 .NET Framework 数据提供程序不支持其他 .NET Framework 数据提供程序所支持的 Persist Security Info 关键字。但是,ConnectionString 属性的行为如同将 Persist Security Info 设置为 false 时的行为一样。这表明如果连接已打开,则不能从 ConnectionString 属性中检索密码。当从已经打开的 OdbcConnection 对象读取 ConnectionString 属性时,返回的连接字符串不带密码。无法更改此行为;因此,如果应用程序需要密码,请在调用 Open 之前单独存储它。

在字符串中指定的许多设置都具有相应的只读属性(例如,与 DataSource 属性对应的 Server=(local))。在打开连接后,这些属性都会得到更新,但检测到错误时例外。在检测到错误时,不会更新任何属性。OdbcConnection 属性(如 Database)只返回默认设置或 ConnectionString 中指定的那些设置。

在 Microsoft .NET Framework 1.0 版中,在应用程序调用 Open 方法之前不会验证连接字符串。验证连接字符串是基础 ODBC 驱动程序要做的事。如果连接字符串包含无效的或不受支持的属性,该驱动程序可能会在运行时引发 OdbcException。

但是,在 .NET Framework 1.1 版和更高版本中,只要设置 ConnectionString 属性,一些基本的连接字符串验证操作就会发生。在这种情况下,数据提供程序会验证连接字符串是否符合"keyword=value;..."格式,但它不会验证关键字或值是否有效。剩余的验证由基础 ODBC 驱动程序在应用程序调用 Open 方法时进行。

ODBC 连接字符串具有以下语法:

 

connection-string ::= empty-string[;] | attribute[;] | attribute; connection-string

empty-string ::=

attribute ::= attribute-keyword=attribute-value | DRIVER=[{]attribute-value[}]

attribute-keyword ::= DSN | UID | PWD

| driver-defined-attribute-keyword

attribute-value ::= character-string

driver-defined-attribute-keyword ::= identifier

其中,character-string 有零个或零个以上字符;identifier 具有一个或一个以上字符;attribute-keyword 不区分大小写;而 attribute-value 可以区分大小写并且 DSN 关键字的值不能只包含空白。

 

由于连接字符串和初始化文件语法的要求,应避免使用包含未用大括号括起的字符 []、{}、()、,、;、?、*、=、!、@ 的属性值和关键字。DSN 关键字值不能只包括空白并且不应该包含前导空白。由于系统信息语法的缘故,关键字和数据源名称不能包含反斜杠 (\) 字符。

应用程序不必在 DRIVER 关键字之后的属性值两边添加大括号,除非该属性包含分号 (;)(在这种情况下需要使用大括号)。如果驱动程序收到的属性值包括括号,驱动程序不应该删除它们,而应将它们作为返回的连接字符串的一部分加以保留。

用大括号 ({}) 括起来的连接字符串值或 DSN(其中包含字符 []、{}、()、,、;、?、*、=、!、@ 中任意字符)会按原样传递到驱动程序。但是,如果在关键字中使用这些字符,驱动程序管理器会在使用文件 DSN 时返回错误,但会将该连接字符串传递给常规连接字符串的驱动程序。在关键字值中应避免使用嵌入括号。

连接字符串可以包括任意数量的由驱动程序定义的关键字。因为 DRIVER 关键字不使用来自系统的信息,该驱动程序必须定义足够的关键字,以便驱动程序仅使用连接字符串中的信息就可以连接数据源。驱动程序定义连接数据源需要哪些关键字。

如果在连接字符串中存在任何重复的关键字,则无法保证哪个值将被选中。

 

Note注意

如果 ODBC 驱动程序支持长于 1024 个字符的连接字符串,则可以使用数据源名称 (DSN) 来超出最大长度限制。

 

原:http://msdn.microsoft.com/zh-cn/library/system.data.odbc.odbcconnection.connectionstring%28v=vs.80%29.aspx

 

OdbcConnection 对象表示到数据源的唯一连接,该数据源是通过使用连接字符串或 ODBC 数据源名称 (DSN) 创建的。在客户端/服务器数据库系统中,它等效于一个到服务器的网络连接。OdbcConnection 对象的某些方法或属性可能不能使用,具体情况视本机 ODBC 驱动程序支持的功能而定。

OdbcConnection 对象使用本机资源,如 ODBC 环境和连接句柄。应始终通过在 OdbcConnection 对象超出范围前调用 Close 或 Dispose,或者通过将连接放入 Using 语句中,显式关闭任何打开的 OdbcConnection 对象。不这样做会将释放这些本机资源的操作留给垃圾回收。它可能不会立即释放它们。而这样最终又可能会造成基础驱动程序资源枯竭或达到最大限制。从而导致 失败时有发生。例如,当有许多连接等待被垃圾回收器删除时,可能会发生与 Maximum Connections 相关的错误。显式关闭连接可以更高效地使用本机资源,增强可伸缩性并提高应用程序的总体性能。

 

Note注意

若要部署高性能应用程序,则必须频繁使用连接池。但是,当使用用于 ODBC 的 .NET Framework 数据提供程序时,不必启用连接池,因为提供程序会自动对此进行管理。

如果 OdbcCommand 类的一个 Execute 方法导致致命的 OdbcException(例 如,SQL Server 严重级别为 20 或更高),OdbcConnection 可能关闭。但是,用户可以重新打开连接并继续操作。

创建 OdbcConnection 对象的实例的应用程序可通过设置声明性或命令性安全要求,要求所有直接和间接的调用方都具有访问代码的充分权限。OdbcConnection 使用 OdbcPermission 对象创建安全要求。用户可以通过使用 OdbcPermissionAttribute 对象来验证他们的代码是否具有足够的权限。用户和管理员还可以使用"代码访问安全策略工具"(Caspol.exe) 修改计算机级、用户级和企业级安全策略。有关更多信息,请参见 代 码访问安全性和 ADO.NET

posted on 2012-07-26 16:26  Roamman  阅读(1437)  评论(0编辑  收藏  举报