Xamarin/C#/SQlLite - 为什么我的 SUM 查询返回 'System.Threading.Task'?
Xamarin/C#/SQlLite - Why is my SUM query returning 'System.Threading.Task'?
问题: 我有一个页面将显示我针对 SQLite 进行的各种 SQL 查询的结果D B。第一个应该取一列的总和 return 它。我使用了各种资源来详细说明如何进行 SQL 查询并将它们 return 作为可用变量,但我显然没有成功。目前正在 returning 'System.Threading.Task' 作为字符串。很想知道我哪里出了问题。
我的数据库方法获取 DAYS 列的总和:
public Task<int> getLeaveDaysSum()
{
return _database.ExecuteScalarAsync<int>("SELECT SUM(DAYS) from [LeaveEntry]");
}
我的 OnAppearing 方法将更新页面标签以显示上述方法的结果:
protected override void OnAppearing()
{
base.OnAppearing();
LeaveTakenDays.Text = App.Database.getLeaveDaysSum().ToString();
}
一如既往,如果我可以提供更多详细信息,请告诉我。感谢所有帮助。
您需要使用 await
关键字,因为这是一个异步方法(并且还使用后缀 Async 更改方法名称)
async
修饰符指定该方法是异步的,当调用异步方法时,返回一个任务。当 await
运算符应用于任务时,当前方法立即退出。当任务完成时,执行将以相同的方法恢复,这就是您的代码中缺少的。
public async Task<int> getLeaveDaysSumAsync()
{
var count = await _database.ExecuteScalarAsync<int>("SELECT SUM(DAYS) from
[LeaveEntry]");
return count;
}
protected async override void OnAppearing()
{
base.OnAppearing();
var count = await App.Database.getLeaveDaysSumAsync();
LeaveTakenDays.Text = count.ToString();
}
更多关于 async/await 的信息可以在这里找到:https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/asynchronous-programming
问题: 我有一个页面将显示我针对 SQLite 进行的各种 SQL 查询的结果D B。第一个应该取一列的总和 return 它。我使用了各种资源来详细说明如何进行 SQL 查询并将它们 return 作为可用变量,但我显然没有成功。目前正在 returning 'System.Threading.Task' 作为字符串。很想知道我哪里出了问题。
我的数据库方法获取 DAYS 列的总和:
public Task<int> getLeaveDaysSum()
{
return _database.ExecuteScalarAsync<int>("SELECT SUM(DAYS) from [LeaveEntry]");
}
我的 OnAppearing 方法将更新页面标签以显示上述方法的结果:
protected override void OnAppearing()
{
base.OnAppearing();
LeaveTakenDays.Text = App.Database.getLeaveDaysSum().ToString();
}
一如既往,如果我可以提供更多详细信息,请告诉我。感谢所有帮助。
您需要使用 await
关键字,因为这是一个异步方法(并且还使用后缀 Async 更改方法名称)
async
修饰符指定该方法是异步的,当调用异步方法时,返回一个任务。当 await
运算符应用于任务时,当前方法立即退出。当任务完成时,执行将以相同的方法恢复,这就是您的代码中缺少的。
public async Task<int> getLeaveDaysSumAsync()
{
var count = await _database.ExecuteScalarAsync<int>("SELECT SUM(DAYS) from
[LeaveEntry]");
return count;
}
protected async override void OnAppearing()
{
base.OnAppearing();
var count = await App.Database.getLeaveDaysSumAsync();
LeaveTakenDays.Text = count.ToString();
}
更多关于 async/await 的信息可以在这里找到:https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/asynchronous-programming