我正在开发一种在非常大的表中搜索信息的方法.由于我不使用ORDER BY或查询中的任何特殊内容(只是一个简单的SELECT id,描述FROM抱怨WHERE描述,如’你的文字在这里’),我希望通过返回批量结果来提供更加动态的用户体验这与在Management Studio中运行查询类似.
一些细节,我的调用堆栈并不大,但不是一切都在同一个方法.有buttonSearchClick,performCleanSearch和searchComplainBasedOnDetailInfo,每个都在不同的层(分别是Interface,SearchBLL和SearchDAL).
我想过创建一个异步方法来填充像List< Complain>这样的东西.但这似乎并不干净.我必须制作3层异步.有没有人对如何实现这个有更好的想法?或者这是最好的方法吗?
Edit1:我已经设法使用sqlCommand.BeginExecuteReader连接到连接字符串上的异步处理,以便在查询出现时从查询中获取结果…现在我必须想办法让我的DAL方法保持异步,所以上层图层也可以获取结果async …我正在考虑实现某种缓冲…也许是一个队列……
解决方法
您可以使用BackgroundWorker,在DoWork中让您的批次执行以下操作:
DataTable dt; int iRecords = 0; do { dt = new DataTable(); using(sqlConnection con = new sqlConnection("")) { sqlCommand cmd = new sqlCommand(string.Format("SELECT TOP 100 * FROM complain where ID > {0}",iRecords)); sqlDataAdapter sda = new sqlDataAdapter(cmd); sda.Fill(dt); //Report your progress here } } while(dt.Rows.Count != 0)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。