尽管ADO.NET和ADO有一些共通的概念,但是当你首次使用.NET数据库的新访问库时,它们之间就体现出了很大的不同。要理解如何使用ADO.NET的第一步是要理解你将在其子命名空间里找到什么东西:
正如你刚才看到的那样,在.NET里有两套连接类,在SqlClient和OleDb命名空间里可以找得到。那么这两者有什么不同呢?SqlClient类使用本地SQL服务器驱动程序来访问数据库,而OleDb类使用通用OLE-DB接口。在把SQL服务器放在后端使用的时候,SqlClient类和更加通用化的OLE-DB接口相比较而言会有性能上的优势,所以你应该使用前者来连接到SQL服务器。
为了简单起见,我会假设你在本文后面的内容中将一直使用SQL服务器。但是,我将谈到的类也能适用于OLE-DB后端,所以很欢迎你有耐心往下看,尽管你使用的可能是另一种不同的数据库后端。你会需要用等同的OleDb类来替换SqlClient类,你也可能需要稍稍修改一下连接字符串,但是样本代码应该也能被你用上。
就像先前的ADO一样,ADO.NET需要依赖链接对象来表示打开的数据源。但是ADO.NET里的连接和你在ADO里找到的不一样。我已经触及到了一个很大的不同点:有一些连接是专门用于某些数据源的,它们允许软件生产商创建专门的连接类,这些类能用它们数据库的本地接口,来提供额外的功能或者比OleDb类更高的速度。在这里我没有足够的篇幅来谈及所有的类,但是在MSDN Web网站可以查到更多的信息。
.NET Framework的SQL服务器专用连接类使用System.Data.SqlClient.SqlConnection,所以为了连接到SQL服务器的数据库,你就要创建一个SqlConnection的实例。在创建连接对象的过程中,在调用构造函数的时候,你可以指定连接字符串,也可以坚持使用原有的方法,即通过ConnectionString属性来设置连接字符串。但是你不能把这个字符串传递到Open方法,所以不要尝试这么做。
要连接到叫做SomeServer的SQL服务器上的NWIND数据库,我会使用下面的代码:
SqlConnection cn = new SqlConnection("Data Source=SomeServer; _ Initial Catalog=NWIND; Integrated Security=true;"); cn.Open();
要注意,如果你的SQL服务器没有使用域安全,那么你就需要指定用户ID和密码元素,并把“集成安全”的声明从连接字符串里删掉。