创建ADO连接注意事项介绍说明

开发 后端
ADO连接为研发数据库的技术人员对Team System承诺,提供相关工具,这样可以为整个软件开发周期少了不少弯路,降低工作的复杂性。

如果你希望使用更新后的值从服务器刷新数据集中的值,使用ADO连接。如果主键定义在数据表上,DataAdapter.Fill基于主键匹配新行,并把服务器的数据改成已存在的行。。。

经常上网收集资料,自己看多了也能总结出一些东西,在这里究一些使用ADO.NET DataReader 获得***性能的技巧来说谁,同时还回答了一些关于使用ADO.NET DataReader的常见问题。

◆在访问相关 Command 的任何输出参数之前,必须关闭 DataReader。
◆完成读数据之后总是要关闭 DataReader。如果使用 Connection 只是用于返回 DataReader,那么关闭 DataReader 之后立刻关闭它。
另外一个显式关闭 Connection 的方法是把 CommandBehavior.CloseConnection 传递给 ExecuteReader 方法,以确保相关的连接在关闭 ADO.NET DataReader 时被关闭。如果从一个方法返回DataReader,而且不能控制 DataReader 或相关连接的关闭,则这样做特别有用。
◆不能在层之间远程访问 DataReader。DataReader 是为已连接好的数据访问设计的。
◆当访问列数据时,使用类型化访问器,例如,GetString、GetInt32 等。这使您不用进行将 GetValue 返回的 Object 强制转换成特定类型所需的处理。
◆一个单一连接每次只能打开一个 DataReader。在ADO连接中,如果打开一个单一连接,并且请求两个使用只进、只读游标的记录集,那么ADO连接会在游标生存期内隐式打开第二个、未池化的到数据存储区的连接,然后再隐式关闭该连接。对于 ADO.NET,“秘密”完成的动作很少。如果想在相同的数据存储区上同时打开两个 DataReaders,就必须显式创建两个连接,每个 DataReader 一个。这是 ADO.NET 为池化连接的使用提供更多控制的一种方法。
◆ExecuteReader 调用。这将 DataReader 的默认行为更改为仅在请求时将数据加载到内存。注意,CommandBehavior.SequentialAccess 要求顺序访问返回的列。也就是说,一旦读过返回的列,就不能再读它的值了。#t#

如果已经完成读取来自 DataReader 的数据,但仍然有大量挂起的未读结果,就在调用 DataReader 的 Close 之前先调用 Command 的 Cancel。调用 DataReader 的 Close 会导致在关闭游标之前检索挂起的结果并清空流。调用 Command 的 Cancel 会放弃服务器上的结果,这样,DataReader 在关闭的时候就不必读这些结果。如果要从 Command 返回输出参数,还要调用 Cancel 放弃它们。如果需要读取任何输出参数,不要调用 Command 的 Cancel,只要调用 DataReader 的 Close 即可。#t#

用 DataReader 检索二进制大对象 (BLOB) 时,应该把 CommandBehavior.SequentialAccess 传递给 ExecuteReader 方法调用。因为 DataReader 的默认行为是每次 Read 都把整行加载到内存,又因为 BLOB 值可能非常大,所以结果可能由于单个 BLOB 而使大量内存被用光。SequentialAccess 将 DataReader 的行为设置为只加载请求的数据。然后还可以使用 GetBytes 或 GetChars 控制每次加载多少ADO连接

记住,使用 SequentialAccess 时,不能不按顺序访问 DataReader 返回的不同字段。也就是说,如果查询返回三列,其中第三列是 BLOB,并且想访问前两列中的数据,就必须在访问 BLOB 数据之前先访问***列的值,然后访问第二列的值。这是因为现在数据是顺序返回的,并且ADO连接一旦读过该数据,该数据就不再可用。

责任编辑:chenqingxiang 来源: CSDN
相关推荐

2009-12-24 15:18:42

创建ADO.NET

2009-12-21 09:53:45

连接Oracle

2009-12-23 17:05:35

ADO.NET调用

2009-12-29 11:03:28

ADO代码

2009-12-25 15:28:48

ADO类

2009-12-22 09:48:58

WCF枚举类型

2010-01-26 16:54:58

学习C++

2009-12-23 16:31:04

ADO.NET EF

2011-06-24 09:23:02

SEO

2010-10-26 17:28:15

创建Oracle索引

2011-05-26 11:22:04

SEO

2009-12-14 10:08:03

无线路由猫

2009-11-25 17:51:27

2009-12-15 17:47:17

VSIP

2010-10-29 16:33:45

ORACLE存储过程

2010-01-04 16:18:13

ADO.NET连接池

2011-07-22 17:35:17

java路径

2009-08-19 14:36:58

思科认证CCNP

2009-12-24 15:34:44

ADO步骤

2023-09-05 06:44:41

点赞
收藏

51CTO技术栈公众号