这里究ADO.NET DataReader使用技巧做了总结和常见问题的解答,文章还对用 DataReader 检索二进制大对象 (BLOB) 应该怎么做出了讲解。

常常上网搜集材料,自己看多了也能总结出一些东西,在这里究一些运用ADO.NET DataReader 取得***功能的技巧来说谁,一起还答复了一些关于运用ADO.NET DataReader的常见问题。

全面总结ADO.NET DataReader运用技巧  ADO.NET DataReader 第1张

◆在拜访相关 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 要求次序拜访回来的列。也就是说,一旦读过回来的列,就不能再读它的值了。
◆假如现已完结读取来自 DataReader 的数据,但仍然有很多挂起的未读成果,就在调用 DataReader 的 Close 之前先调用 Command 的 Cancel。调用 DataReader 的 Close 会导致在封闭游标之前检索挂起的成果并清空流。调用 Command 的 Cancel 会抛弃服务器上的成果,这样,DataReader 在封闭的时分就不必读这些成果。假如要从 Command 回来输出参数,还要调用 Cancel 抛弃它们。假如需求读取任何输出参数,不要调用 Command 的 Cancel,只需调用 DataReader 的 Close 即可。

二进制大目标 (BLOB)

用 DataReader 检索二进制大目标 (BLOB) 时,应该把 CommandBehavior.SequentialAccess 传递给 ExecuteReader 办法调用。由于 DataReader 的默许行为是每次 Read 都把整行加载到内存,又由于 BLOB 值或许非常大,所以成果或许由于单个 BLOB 而使很多内存被用光。SequentialAccess 将 DataReader 的行为设置为只加载恳求的数据。然后还可以运用 GetBytes 或 GetChars 操控每次加载多少数据。

记住,运用 SequentialAccess 时,不能不按次序拜访 DataReader 回来的不同字段。也就是说,假如查询回来三列,其间第三列是 BLOB,而且想拜访前两列中的数据,就有必要在拜访 BLOB 数据之前先拜访***列的值,然后拜访第二列的值。这是由于现在数据是次序回来的,而且 DataReader 一旦读过该数据,该数据就不再可用。

【修改引荐】

  1. 详谈Linq查询成果剖析的办法
  2. 简简略单学习Linq查询语法
  3. 具体论述Linq刺进数据的操作办法
  4. 浅析Linq刺进数据的完成办法
  5. 简略处理Linq多条件组合问题
转载请说明出处
知优网 » 全面总结ADO.NET DataReader运用技巧

发表评论

您需要后才能发表评论