这篇文章起源于在公司写的一个PPT
但是由于PPT本身的限制很多内容无法表达或是详细的解释
于是变下定了决心
写篇文档!
在这篇文章里我将尽量简单的描述下ADONET 的新特性尤其是配合SQL Server 所展现出来的强大实力如果想进一步了解ADONET 编程方面的话可以去阅读Glenn Johnson的ADONET 高级编程[微软推荐丛书] 定价:元网络购书的话打了折只要块就可以了
一功能强大的ADO
年底(年月)与 SQL Server 一起出现的是 NET Framework 版本其中用来访问数据库的 ADONET类也升级到 ADONET 版
ADONET 除了增强旧功能外也提供了相当多的新功能包含了以基础类为本(baseclassbased)的数据源提供程序(provider)模型异步访问架构批处理更新与大量数据复制(bulk copy)SQL Server 的回调通知单一连接同时多执行结果集(MARS)执行统计强化的 DataSet 类等等换句话说若要有效发挥 SQL Server 的功能前端应用程序最好用 ADONET 来开发
ADONET 提供了相当多的新增功能一些与数据源提供程序无关也就是访问各种数据库都可以用到的功能但有很大的一部分是专属于 SQL Server 针对 SQL Server 的新功能提供给前端应用程序开发使用
二: 使用多数据结果集(仅限)
在之前版本的 SQL Server 同一时间一条连接只能传递一个 SELECT 语法执行后返回的结果集如果想在一次连接后返回多个查询内容只能使用类似如下的方法来实现
SqlDataAdapter myDataAdapter = new SqlDataAdapter(StoredProcedureNamemyConnection);myDataAdapterSelectCommandCommandType = CommandTypeStoredProcedure;myDataAdapterSelectCommandParametersAdd(@sqlstrsqlstr);DataSet ds = new DataSet();myDataAdapterFill(ds);return ds;dsTables[]dsTables[]dsTables[]分别对应三个结果集
SQL Server
提供了在同一条连接上可以同时传递多个没有游标结构(cursorless)的结果集(也称为默认结果集)
此功能称为 Multiple Active Resultsets(MARS)
如此可以节省需要同时打开的连接数
但要注意的是连接字符串设置要加上 MultipleAct
iveResultSets=true 属性
否则默认不启动多数据结果集的功能
string connstr = server=(local);database=northwind;integrated security=true; ;SqlConnection conn = new SqlConnection(connstr);connOpen();SqlCommand cmd = new SqlCommand(select * from customers conn);SqlCommand cmd = new SqlCommand(select * from orders conn);SqlDataReader rdr = cmdExecuteReader();// next statement causes an error prior to SQL Server SqlDataReader rdr = cmdExecuteReader();// now you can reader from rdr and rdr at the same time