C# SQLite记录是如何更新的?
接受此代码的语法:C# SQLite记录是如何更新的?,c#,sqlite,windows-8,windows-store-apps,sqlite-net,C#,Sqlite,Windows 8,Windows Store Apps,Sqlite Net,接受此代码的语法: public async Task UpdateLocationAsync(SOs_Locations locations) { var db = new SQLiteAsyncConnection(SQLitePath); await db.UpdateAsync(locations); } …但我不知道SQLite引擎如何知道在传递类实例时更新哪个记录。是否是SQLite或SQLite net引擎偷看ID值并在幕后执行以下操作(在SQLese中): 这正
public async Task UpdateLocationAsync(SOs_Locations locations)
{
var db = new SQLiteAsyncConnection(SQLitePath);
await db.UpdateAsync(locations);
}
…但我不知道SQLite引擎如何知道在传递类实例时更新哪个记录。是否是SQLite或SQLite net引擎偷看ID值并在幕后执行以下操作(在SQLese中):
这正是它的作用。您可以检查方法的来源: 当然,如果需要更多控制,您可以始终执行自己的SQL:
db.ExecuteAsync("UPDATE SOs_Locations Set Bla = ?, WHERE ID = ?", bla, id);
查看此链接以获取有关如何获取更新命令所需内容的示例如果插入成功与否,相同的理论也适用于获取int值。。伟大的因此,我要做的是将记录的ID存储在标记属性中,并确保在调用UpdateAsync()之前将对象实例的ID属性设置为该值。也谢谢你的另一个例子,因为在某些情况下,我可能也想走这条路。
var q = string.Format ("update \"{0}\" set {1} where {2} = ? ", map.TableName, string.Join (",", (from c in cols
select "\"" + c.Name + "\" = ? ").ToArray ()), pk.Name);
db.ExecuteAsync("UPDATE SOs_Locations Set Bla = ?, WHERE ID = ?", bla, id);