You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Forms中操作SQLite:如何更新本地数据库单条记录

实现方案

你当前用的是sqlite-net ORM库,有两种和现有增删逻辑风格一致的更新实现方式:

方式1:条件链式更新(和你删除写法逻辑完全一致,无需提前查询记录)

直接通过Linq匹配目标记录,一次性更新指定字段,代码示例:

using (SQLiteConnection localconn = new SQLiteConnection(App.FilePath))
{
    localconn.CreateTable<Road_Inspections>();
    // 按Unique_ID匹配目标记录,更新对应字段,这里的字段可根据实际需求增减
    var targetRecord = localconn.Table<Road_Inspections>()
                              .Where(x => x.Unique_ID == unique_ID)
                              .FirstOrDefault();
    int updateRows = 0;
    if (targetRecord != null)
    {
        targetRecord.Defect_Type = txtDefectType.Text.ToString();
        targetRecord.Response = txtResponse.Text.ToString();
        targetRecord.Inspection_Date = DateTime.Now;
        updateRows = localconn.Update(targetRecord);
    }
    if (updateRows > 0)
    {
        await DisplayAlert("成功", "记录已更新", "确定");
    }
    else
    {
        await DisplayAlert("提示", "未找到匹配的记录", "确定");
    }
}

方式2:先查询再更新(适合需要提前校验记录状态的场景)

先把目标记录查出来,修改字段后再提交更新:

using (SQLiteConnection localconn = new SQLiteConnection(App.FilePath))
{
    localconn.CreateTable<Road_Inspections>();
    // 匹配目标记录
    var targetRecord = localconn.Table<Road_Inspections>().FirstOrDefault(x => x.Unique_ID == unique_ID);
    if (targetRecord != null)
    {
        // 赋值新的字段值,可按需增减
        targetRecord.Defect_Type = txtDefectType.Text.ToString();
        targetRecord.Response = txtResponse.Text.ToString();
        targetRecord.Inspection_Date = DateTime.Now;
        targetRecord.Road_ID = Road_ID.Text.ToString();
        targetRecord.Asset_ID = Asset_ID.Text.ToString();
        
        // 提交更新
        int updateRows = localconn.Update(targetRecord);
        if (updateRows > 0)
        {
            await DisplayAlert("成功", "巡检记录已更新", "确定");
        }
    }
    else
    {
        await DisplayAlert("提示", "未找到对应记录,更新失败", "确定");
    }
}

注意事项

  • 两种方式返回的updateRows都是本次操作实际更新的记录行数,可用来判断操作是否生效
  • 如果你的Road_Inspections类里Unique_ID标记了[PrimaryKey]特性,也可以直接构造带主键的新对象调用Update方法,ORM会自动按主键匹配更新全字段

内容的提问来源于stack exchange,提问作者Tricky035

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:45:05