gpt4 book ai didi

c# - sqlite 中保存的 xamarin 应用程序数据已清除

转载 作者:行者123 更新时间:2023-12-02 09:11:28 26 4
gpt4 key购买 nike

我在 xamarin.forms 应用程序中使用 sqlite 作为本地数据库。杀死应用程序后,数据库将被清除。

向数据库添加数据并从数据库读取数据正常,应用程序行为正常,但在杀死应用程序并将应用程序置于后台一段时间后,数据库记录丢失。

database = new WorkingTimeHistoryItemDatabase(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "TimeStamps.db3"));

我需要拥有该数据,直到应用程序被卸载

更新

这是WorkingTimeHistoryItemDatabase 类

public class WorkingTimeHistoryItemDatabase
{
readonly SQLiteAsyncConnection database;

public WorkingTimeHistoryItemDatabase(string dbPath)
{
database = new SQLiteAsyncConnection(dbPath);
database.CreateTableAsync<TimeRecord>().Wait();
}

public Task<List<TimeRecord>> GetItemsAsync()
{
return database.Table<TimeRecord>().ToListAsync();
}

//public Task<List<TimeRecord>> GetItemsNotDoneAsync()
//{
// return database.QueryAsync<TimeRecord>("SELECT * FROM [TodoItem] WHERE [Done] = 0");
//}

public Task<List<TimeRecord>> GetItemAsync(string id)
{
return database.Table<TimeRecord>().Where(i => i.dateOnly == id).ToListAsync();
}

public Task<TimeRecord> GetRecentIn()
{
return database.Table<TimeRecord>().Where(i => i.inorout == "In").OrderByDescending(i => i.datetime).FirstOrDefaultAsync();
}


public Task<TimeRecord> GetRecentOut()
{
return database.Table<TimeRecord>().Where(i => i.inorout == "Out").OrderByDescending(i => i.datetime).FirstOrDefaultAsync();
}


public Task<int> SaveItemAsync(TimeRecord item)
{
return database.InsertAsync(item);
}

public Task<int> DeleteItemAsync(TimeRecord item)
{
return database.DeleteAsync(item);
}
}

最佳答案

最好的办法是使用“ApplicationData”文件夹。它将保留您的应用程序特定数据,并且操作系统知道有一些内容由第三方管理。

关于c# - sqlite 中保存的 xamarin 应用程序数据已清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56416697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com