Xamarin.Forms 中的 sqlite 如何更新本地数据库中的单个记录
Posted
技术标签:
【中文标题】Xamarin.Forms 中的 sqlite 如何更新本地数据库中的单个记录【英文标题】:sqlite in Xamarin.Froms how to Update individual record in Local DB 【发布时间】:2021-11-16 12:18:03 【问题描述】:我正在尝试更新 sqlite 数据库中的单个记录。我知道如何插入和删除记录。我想以与下面删除单个记录类似的方式更新单个记录。这使用 linq 语句按资产 ID 获取记录。然后我想将我的数据传递给它以进行更新。
我还介绍了如何插入新记录以供参考。有没有人可以分享的例子?
删除现有记录
using (SQLiteConnection localconn = new SQLiteConnection(App.FilePath))
localconn.CreateTable<Road_Inspections>();
localconn.Table<Road_Inspections>().Where(x => x.Unique_ID == unique_ID).Delete();
插入新记录
Road_Inspections lri = new Road_Inspections()
ID = id,
Road_ID = Road_ID.Text.ToString(),
Asset_ID = Asset_ID.Text.ToString(),
Defect_Type = txtDefectType.Text.ToString(),
Response = txtResponse.Text.ToString(),
Inspection_Date = DateTime.Now,
;
using (SQLiteConnection conn = new SQLiteConnection(App.FilePath))
conn.CreateTable<Road_Inspections>();
int rowsAdded = conn.Insert(lri);
await DisplayAlert("Success", "Inspeciton Saved to Device", "OK");
【问题讨论】:
【参考方案1】:您需要在您的对象声明中使用主要的Key
或Id
来标识您数据库中的唯一对象,例如:
[PrimaryKey, AutoIncrement]
public int Id get; set;
由于您要更新,您必须首先从数据库中获取原始条目。 然后你可以编辑和更新它。因此,您无需在插入新的之前将其删除。
在 xamarin 形式中,您可以使用 nuget sqlite-net-pcl 来实现此目的。
请参考以下代码:
public Task<int> SaveItemAsync(TodoItem item)
if (item.ID != 0)
return Database.UpdateAsync(item);
else
return Database.InsertAsync(item);
更多详情,您可以查看:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/data/databases。
上面的文档中有一个示例,您可以在这里查看:https://docs.microsoft.com/en-us/samples/xamarin/xamarin-forms-samples/todo/
【讨论】:
感谢您为我指明正确的方向@Jessie Zhang 你能告诉我如何使用上述框架删除表格。我可以这样做,但更愿意使用上述方法:using (SQLiteConnection conn = new SQLiteConnection(App.FilePath)) conn.DropTable<AssetRegister>();
以上是关于Xamarin.Forms 中的 sqlite 如何更新本地数据库中的单个记录的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms Sqlite(有时)在更新后获取错误结果
我应该在 Xamarin.Forms 上使用哪些 SQLite (sqlite-net-pcl) 标志?