——此文章摘自《C#高级编程(第
版)》定价
元 特价
元 购买
使用数据库连接
为了访问数据库需要提供某种类型的连接参数例如运行数据库的机器和登录凭证使用ADO的用户会很快熟悉NET连接类OleDbConnection和SqlConnection图显示了连接类及它们支持的接口
在本章的示例中使用Northwind数据库它是和NET Framework SDK示例一起安装的下面的代码段说明了如何创建打开和关闭Northwind数据库的连接
using SystemDataSqlClient;
string source = server=(local)\\NetSDK; +integrated security=SSPI; +database=Northwind;
SqlConnection conn = new SqlConnection(source);
connOpen();
// Do something useful
connClose();
图
如果以前使用过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
在本章的下载代码中有一个文件Logincs简化了本章的示例它链接了所有的示例代码包括用于这些示例的数据库连接信息可以修改该文件使用自己的服务器名称用户和密码在默认情况下该文件使用Windows集成的安全性但是可以根据需要修改用户名和密码
高效地使用连接
一般情况下当在NET中使用稀缺的资源时例如数据库连接窗口或图形对象最好确保每个资源在使用后立即关闭尽管NET的设计人员实现了自动的垃圾收集垃圾最终都会被回收但仍需要尽可能早地释放资源以避免出现资源匮乏的情况
当编写访问数据库的代码时这是非常明显的因为使连接打开的时间略长于需要的时间就可能影响其他会话在极端的情况下不关闭连接会使其他用户无法进入一整组数据表极大地降低了应用程序的性能关闭数据库连接应是强制的所以本节讨论如何构建代码把一直打开资源的风险降到最低
主要有两种方式可以确保数据库连接等类似的稀缺资源在使用后立即释放
第一种方式—— 利用try…catch…finally语句块
确保释放资源的第一种方式是利用try…catch…finally块确保在finally块中关闭任何已打开的连接下面是一个小示例
try
{
// Open the connection
connOpen();
// Do something useful
}
[] []