需要 return 带有异步数据库请求的 SqlDataReader
Need to return SqlDataReader with asynchronous database request
以下方法在 SQL 服务器数据库中执行查询:
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
。这些方法不能 return 除了 void
或 Task
以外的任何东西。已经考虑为查询执行编写另一个方法,但是 aysnc
方法不能采用 ref
参数。解决这个问题的最佳方法是什么?
Task<T>
可以return你所需要的
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;
}
}
以下方法在 SQL 服务器数据库中执行查询:
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
。这些方法不能 return 除了 void
或 Task
以外的任何东西。已经考虑为查询执行编写另一个方法,但是 aysnc
方法不能采用 ref
参数。解决这个问题的最佳方法是什么?
Task<T>
可以return你所需要的
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;
}
}