c# - 需要用异步数据库请求返回 SqlDataReader
问题描述
以下方法在 SQL Server 数据库中执行查询:
private bool authenticated(SqlConnection conn)
{
string query = "some sql query";
SqlCommand cmd = new SqlCommand(query, conn);
// the intent is to change this to: SqlDataReader reader = await cmd.ExecuteReaderAsync();
SqlDataReader reader = cmd.ExecuteReader();
if (!reader.HasRows)
{
return false;
}
while (reader.Read())
{
// do some stuff
/*
if (some condition)
return true;
*/
}
}
执行查询的方法调用需要更改为异步版本。但是,该方法需要更改为async
. 此类方法不能返回除void
or以外的任何内容Task
。已经考虑为查询执行编写另一个方法,但aysnc
方法不能带ref
参数。最好的方法是什么?
解决方案
Task<T>
可以返回你需要的东西。
private async Task<bool> authenticated(SqlConnection conn)
{
string query = "some sql query";
SqlCommand cmd = new SqlCommand(query, conn);
// the intent is to change this to: SqlDataReader reader = await cmd.ExecuteReaderAsync();
SqlDataReader reader = await cmd.ExecuteReaderAsync();
if (!reader.HasRows)
{
return false;
}
while (reader.Read())
{
// do some stuff
if (some condition)
return true;
}
}
推荐阅读
- numpy - 将数字映射到 numpy 数组列中的颜色的最佳方法
- java - 如何在 Android 的 Exo Player 中播放 Vimeo 私人文件
- c++ - 如何创建二维矩阵 C++ 的水平镜像逆?
- c# - 递归函数中的堆栈
- firebase - 在使用 Firebase 会话 cookie 时检测 Firestore 安全规则中经过身份验证的用户
- python-3.x - 针对一列绘制多列值
- codeigniter - 使用 where 子句时如何避免结果数组中的重复行
- javascript - 当我通过 vuejs 中的后退按钮返回相同的 URL 时,是否可以获得相同的组件数据属性?
- sql - 如何以 1-1 关系将数据存储到表中(单事务)
- quasar-framework - 任何人在 ios 13.4.1 ( 最新版本 ) 上遇到问题