SQLite持久更新
我在WindowsUWP(10)上使用SQLite 这就是我正在做的: 开放连接 开始交易 更新行 提交事务 密切联系 然而,数据库中的值实际上并没有写入表中。重新加载记录时(在断开并重新连接或未断开连接后),该值保留在调用更新之前 我还有什么事要做吗?在SQLite的DB浏览器中,有一个名为“写入更改”的菜单项。那有什么用?只是普通的承诺?在浏览器中,只有单击此菜单项,更改才会提交 此外,我对连接进行了跟踪,结果如下: 正在执行:开始事务 执行:更新 “TaskManagement.TaskInfo” 设置 StatusKey=@StatusKey,ProbaddtTM=@ProbaddtTM,ProbCode=@ProbCode,ProbPriority=@ProbPriority,ProbGroup=@ProbInsp=@ProbInsp,Activity=@Activity,Updatedtm=@Updatedtm,Asset=@Asset,Address=@Address,TaskStartDttm=@TaskStartDttm,MaintenanceScheduleSetup=@MaintenanceScheduleSetup,MaintenanceScheduleBatch=@MaintenanceScheduleBatch,ProbZone=@ProbZone,ProbContractor=@ProbNotes=@ProbNotes,JobCompleted=@JobCompleted,Resolution=@Result=@Result,ActType=@ActType,Complaint=@Complaint,BudgetNo=@BudgetNo,Contractor=@Contractor,MapLocCorrect=@MapLocCorrect,FollowUpWorkRequired=@FollowUpWorkRequired,Condition=@Condition,ActPriority=@ActPriority,ExpectedVersion=@ExpectedVersion,EmailProbOriginator=@EmailProbOriginator,IsBug=@IsBug,IsCompletePendingCheckIn=@IsCompletePendingCheckIn 哪里 TaskInfoKey=@PrimaryKey 0:63711ec4-57d0-4a23-8595-0022b757af44 1: 6 2: 2013-06-03 08:56:39:117 3: 13 4: 2 5: 17 6: 24 7: 8: 2015-11-10 04:05:09:502 9: 10: 11: 2013-06-03 08:56:39:117 12: 13: 14: 15: 16:测试这个mofo! 17: 2013-08-15 12:13:24:620 18: 19: 20: 21: 22: 23: 4 24:错 25:错 26: 27: 28: 3 29:错 30:错 31:错SQLite持久更新,sqlite,persistence,uwp,Sqlite,Persistence,Uwp,我在WindowsUWP(10)上使用SQLite 这就是我正在做的: 开放连接 开始交易 更新行 提交事务 密切联系 然而,数据库中的值实际上并没有写入表中。重新加载记录时(在断开并重新连接或未断开连接后),该值保留在调用更新之前 我还有什么事要做吗?在SQLite的DB浏览器中,有一个名为“写入更改”的菜单项。那有什么用?只是普通的承诺?在浏览器中,只有单击此菜单项,更改才会提交 此外,我对连接进行了跟踪,结果如下: 正在执行:开始事务 执行:更新 “TaskManagement.TaskI
执行:Commit因此,最后的问题是我没有正确地将参数传递到库中。连接的CreateCommand方法只允许您传入命令文本和对象数组。这是不正确的,因为这意味着您无法命名参数。因此,在UWP的SQLite的特定实现中,我认为这是一个缺失的功能。 其次,这应该是错误的!我上面提到的所有参数名称都没有传递到命令中,但是当我运行它时,没有引发异常。因此,我认为这是实现中的第二个错误。 我是这样修复的:
var command = _Connection.CreateCommand(commandText, new object[0]);
if (parameters != null)
{
foreach (var parameter in parameters)
{
if (parameter.ParameterValue is DateTime)
{
parameter.ParameterValue = ((DateTime)parameter.ParameterValue).ToString("yyyy-MM-dd hh:mm:ss:fff");
}
command.Bind(parameter.ParameterName, parameter.ParameterValue);
}
}
return command;