問題:我有一個頁面將顯示我針對 SQLite 資料庫進行的各種 SQL 查詢的結果。第一個應該取一列的總和并回傳它。我使用了各種資源來詳細說明如何進行 SQL 查詢并將它們作為可用變數回傳,但顯然我沒有成功。這當前以字串形式回傳“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();
}
與往常一樣,如果我能提供更多詳細資訊,請告訴我。所有幫助表示贊賞。
uj5u.com熱心網友回復:
您需要使用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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/313138.html
