为了访问数据库,需要提供某种类型的连接参数,例如运行数据库的机器,和登录凭证。使用ADO的用户会很快熟悉.NET连接类OleDbConnection和SqlConnection,图21-1显示了连接类及它们支持的接口。
在本章的示例中,使用Northwind数据库,它是和.NET Framework SDK示例一起安装的。下面的代码段说明了如何创建、打开和关闭Northwind数据库的连接。
using System.Data.SqlClient;
string source = "server=(local)\\NetSDK;" +"integrated security=SSPI;" +"database=Northwind";
SqlConnection conn = new SqlConnection(source);
conn.Open();
// Do something useful
conn.Close();

图 21-1
如果以前使用过ADO或OLE DB,就会很熟悉连接字符串。如果使用的是OleDb提供程序,就应能剪切和粘贴旧代码。在该示例的连接字符串中,使用的参数如下所示。连接字符串中的参数用分号分隔开。
● server=(local)\\NetSDK:表示要连接的数据库服务器。SQL Server允许在同一台机器上运行多个不同的数据库服务器进程,所以这里在本地机器上连接NetSDK进程。
● integrated security=SSPI:这个参数使用Windows Authentication连接数据库,最好在源代码中使用这个参数,而不是用户名和密码。
● database=Northwind:这描述了要连接的数据库实例。每个SQL Server进程都可以有几个数据库实例。
这个示例使用定义的连接字符串打开数据库连接,再关闭该连接。连接打开后,就可以对数据源执行命令,完成后,就可以关闭连接。
SQL Server有另一个模式的身份验证。它可以使用Windows集成的安全性,这样在登录时提供的证书就会传送给SQL Server。这适合于删除连接字符串的uid 和 pwd部分,并添加Integrated Security=SSPI。
在本章的下载代码中,有一个文件Login.cs简化了本章的示例。它链接了所有的示例代码,包括用于这些示例的数据库连接信息;可以修改该文件,使用自己的服务器名称、用户和密码。在默认情况下,该文件使用Windows集成的安全性,但是可以根据需要修改用户名和密码。
高效地使用连接
一般情况下,当在.NET中使用“稀缺”的资源时,例如数据库连接、窗口或图形对象,最好确保每个资源在使用后立即关闭。尽管.NET的设计人员实现了自动的垃圾收集,垃圾最终都会被回收,但仍需要尽可能早地释放资源,以避免出现资源匮乏的情况。
当编写访问数据库的代码时,这是非常明显的,因为使连接打开的时间略长于需要的时间,就可能影响其他会话。在极端的情况下,不关闭连接会使其他用户无法进入一整组数据表,极大地降低了应用程序的性能。关闭数据库连接应是强制的,所以本节讨论如何构建代码,把一直打开资源的风险降到最低。
主要有两种方式可以确保数据库连接等类似的“稀缺”资源在使用后立即释放。
1. 第一种方式—— 利用try…catch…finally语句块
确保释放资源的第一种方式是利用try…catch…finally块,确保在finally块中关闭任何已打开的连接。下面是一个小示例:
try
{
// Open the connection
conn.Open();
// Do something useful
}

一沙一世界 一花一天堂 掌中握無……

网络编程技术、多媒体技术、PC应用技术
