因海关业务复杂,数据量极大,在做sql自定义查询的时候需要限定返回结果集DataSet的数据量,微软本身的DataAdpter的Fill方法根本无法满足其需要,所以得自己想法实现,再自己实现了IDataReader转换为DataSet的方法后,发现在调用DataReader.Close的时候老是报“超时异常”。仔细翻阅了MSDN对Close方法的说明后,在备注的地方发现了这么一段话:
Close 方法填写输出参数的值、返回值和 RecordsAffected,从而增加了关闭用于处理大型或复杂查询的 SqlDataReader 所用的时间。如果返回值和查询影响的记录的数量不重要,则可以在调用 Close 方法前调用关联的 SqlCommand 对象的 Cancel 方法,从而减少关闭 SqlDataReader 所需的时间。
DataReader为了计算RecordsAffected值,在Close之前会继续读取剩下的记录,直到读完为止。原来执行Command的Cancel方法就可以解决这个问题。
下面是我的测试函数代码(仅供参考):
| 代码如下 | 复制代码 |
|
|
|
解决问题,效率也还可以。
注:之所以不用实体和高效率的分页方法,是因为sql语句为业务人员自己写的,无法确定有哪些字段,语句复杂度也无法确定,所以采用此方法。
如果我不曾见过太阳高清无删减夸克在线看-如果我不曾见过太阳蓝光高清1080p无删减资源夸克免费转存
如果我不曾见过太阳阿里云盘全集高清1080P资源链接-如果我不曾见过太阳免费阿里云盘资源下载4K高清无删减版链接
罚罪1+2全80集阿里云盘全集资源链接-罚罪1+2全集高清1080P/4K阿里云盘资源下载无删减
邵氏精品禁品未删减资源在线看-必看的50部邵氏电影无删减观看入口
羞羞漫画高清最新资源-正规平台免费入口与无删减资源导航
日漫入口-官方认证安全入口与无删减日漫资源直达导航