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

如何批量修改SQLite中所有符合条件的Job表EmployeeId字段?

解决SQLite批量修改Job表EmployeeId的问题

方案1:查询所有符合条件的记录后循环更新

如果需要先将记录加载到内存(比如还要对每条记录做额外处理),可以先获取所有匹配的Job记录,再逐个修改并更新:

public static async Task ClearEmployee(int oldId)
{
    // 获取所有EmployeeId等于指定值的记录
    var foundJobs = await myDatabase.Table<Job>()
                                   .Where(i => i.EmployeeId == oldId)
                                   .ToListAsync();

    foreach (var job in foundJobs)
    {
        job.EmployeeId = 0;
        await myDatabase.UpdateAsync(job);
    }
}

这种方式适合需要对单条记录做额外逻辑处理的场景,但数据量较大时会占用较多内存,因为要把所有匹配记录加载到内存中。

方案2:直接执行SQL批量更新(推荐)

更高效的方式是直接在数据库层面执行UPDATE语句,无需加载任何记录到内存,适合纯批量修改的场景:

public static async Task ClearEmployee(int oldId)
{
    string updateQuery = "UPDATE Job SET EmployeeId = 0 WHERE EmployeeId = @oldId";
    await myDatabase.ExecuteAsync(updateQuery, new { oldId });
}

这里使用参数化查询@oldId可以避免SQL注入风险,同时直接在数据库完成所有修改,性能远优于逐条更新。

注意事项

  • 若使用SQLite-net库,ExecuteAsync方法专门用于执行非查询类SQL语句(如UPDATE、DELETE、INSERT)。
  • 永远不要直接拼接字符串生成SQL语句,必须使用参数化查询防范注入风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:48:17