知识大全 数据读取器[2]

Posted 索引

篇首语:科学的自负比起无知的自负来还只能算是谦虚。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据读取器[2]相关的知识,希望对你有一定的参考价值。

C#高级编程:数据读取器[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    ——此文章摘自《C#高级编程(第 版)》定价 元 特价 元 购买

    假定CategoryID字段是SELECT语句中用于生成阅读器的第一个字段 那么这两行语句的功能就是相同的 但后者比前者慢一些 为了验证这一点 编写一个简单的测试程序 从打开的数据读取器上对同一列进行一百万次的迭代访问 获取一些足够大的数字 虽然在一个循环中可能并不会对同一列访问一百万次 但按每秒来计算 就可能编写出最佳的代码

    另外 数字索引器平均每 秒就进行一百万次的访问 而文本索引器则需要 秒 原因是文本方法是从模式的内部查找列号 再使用列号的顺序进行访问 如果知道这个区别 就可以更好地访问数据

    是否应使用数字索引器?也许 但还有一种更好的方式

    除了上面给出的索引器外 OleDbDataReader还有一组类型安全的方法可以用于读取列 这些方法都可以进行自我解释 且都以Get开头 有一些方法可以读取大多数类型的数据 例如GetInt GetFloat和GetGuid等

    前面使用GetInt 的一百万次迭代用了 秒 数字索引器中的系统开销是获取数据类型 调用与GetInt 相同的代码 然后装箱(本实例是拆箱)为一个整数 如果以前知道这种模式 并希望使用加密数字而不是列名 以避免对每个列访问使用类型安全的函数 这样运行速度就会比使用文本格式的列名快 倍(选择同一列的上百万个副本)

    在可维护性和速度之间有一个折中的问题 如果必须使用数字索引器 就应在类的范围内为每一个要访问的列定义常量 上面的代码可以用于从任何OLE DB数据库中选择数据 但有许多SQL Server的特定类可以使用 但其便利性有明显的损失

    下面的示例与上一示例基本相同 但在这个实例中用SQL提供程序和SQL类的引用替换了OLE DB提供程序和对OLE DB类的所有引用 代码的变化已经突出显示出来了 该示例在 _DataReaderSql目录下     using System;     using System Data SqlClient;     public class DataReaderSql             public static int Main(string[] args)                  string source = server=(local)\\\\NetSDK; +                       integrated security=SSPI; +                       database=northwind ;           string select = SELECT ContactName CompanyName FROM Customers ;           SqlConnection conn = new SqlConnection(source);           conn Open();           SqlCommand cmd = new SqlCommand(select conn);           SqlDataReader aReader = cmd ExecuteReader();           while(aReader Read())              Console WriteLine( from aReader GetString( )                                 aReader GetString( ));           aReader Close();           conn Close();           return ;            

    注意区别是什么?如果键入这些代码 用sql替换所有的OleDb 改变数据源字符串 重新编译 这是很容易的

    对Sql提供程序的索引器进行相同的性能测试 这次数字索引器也使用 秒就完成了百万次的访问 基于索引器的字符串运行了 秒 本机的Sql提供程序要比OleDb快 直到我在 NET版本中测试这一部分 情况都是这样 可以肯定这是不正常的 因为我使用的是最简单的测试(对同一个值选择 次) 在托管SQL提供程序上进行真实的测试 会得到更好的性能

cha138/Article/program/net/201311/15404

相关参考

知识大全 ASP.NET数据读取填充方式

ASP.NET数据读取填充方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在中读取数据库中的

知识大全 C#中读取数据库中Image数据

C#中读取数据库中Image数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  DataRead

知识大全 asp 读取数据库记录

  asp教程读取数据库教程记录 <%   Dpath="liannet/dbaseMateyDBWeb_^%$#@mdb" SetConn=S

知识大全 Flex与java交互之数据库数据读取

Flex与java交互之数据库数据读取  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  前几天有网

知识大全 读取通过表单发送的数据

ASP讲座之二:读取通过表单发送的数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  学习ASP

知识大全 C#对数据库的读取,写,更新和删除

C#对数据库的读取,写,更新和删除  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ●读取数据其中

知识大全 在VC++应用程序中读取文本数据

在VC++应用程序中读取文本数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们通常把数据存

知识大全 c#通过网线读取三菱PLC数据

c#通过网线读取三菱PLC数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  publicsta

知识大全 数据恢复问题硬盘出现“文件或目录损坏且无法读取”

硬盘出现“文件或目录损坏且无法读取”!数据恢复问题硬盘出现“文件或目录损坏且无法读取”!开始菜单--运行--输入cmd在弹出的黑色窗口中输入chkdskG:/f回车输入y回车就可以了移动硬盘出现文件或

知识大全 asp入门实例-读取数据库程序

cha138/Article/program/net/201311/14165