r.blobs对象
当你使用datareader读取二进制数据时,你应该传递commandbehavior.sequentialaccess给executereader方法调用。因为datareader的默认情况是每次读取数据时把每行中所有的数据都存储到内存,而二进制数据又非常的大,结果就会使大量的内存空间被一个单一的blob占用。sequentialaccess使得你的datareader默认行为为仅读取需要的数据。然后你就可以使用getbytes或者getchars决定一次读取多少数据。
记住的是使用sequentialaccess后,你不能次序颠倒地访问datareader中不同的字段。就是说,如果你的查询返回三列,其中第三列是blob数据类型,如果你想访问第三列数据,那么你就必须先访问第一列,然后是第二列,再然后才是第三列的blob数据。这是因为此时返回的数据是有序的,而且一旦你跳过某一列,再回过头来读取这一列是不行的。
s.使用命令
ado.net提供了执行命令的几种不同方法,同时也提供了优化执行命令的几种不同参数。下面将要介绍的是选择最佳执行命令的技巧和改善一个可执行命令的性能。
i.oledbcommand最佳实践
.net 框架中各种数据提供者之间的执行命令标准几乎是一样的。但是也有不同,下面是执行oledbcommand的一些技巧:
①使用commandtype.text调用存储过程,使用commandtype.storedprocedure生成;
②确定设置oledbparameter的类型、大小(如果要求)和精度(如果是数字或者小数),注意的是,如果你不明确设置oledbparameter,oledbcommand将会为你的执行命令重新生成oledbparameter。
ii.sqlcommand最佳实践
使用sqlcommand快速执行存储过程:如果你要调用一个存储过程,指定sqlcommand的commandtype为存储过程的commandtype。这样在执行命令时,就会提交此命令是调用存储过程,从而达到快速执行。
iii.使用已准备的方法