我在Windows UWP(10)上使用SQLite。
这就是我在做的事情:
打开连接 开始交易 更新行 提交交易 关闭连接
然而,数据库中的值实际上并未写入表中。当我重新加载记录时(在断开连接并重新连接或断开连接之后),在我调用更新之前,该值仍然存在。
我还需要做些什么吗?在SQL Browser的DB Browser中,有一个名为" Write Changes"的菜单项。那是做什么的?只是一个正常的提交?在浏览器中,仅当我单击此菜单项时才会提交更改。
另外,我对连接进行了跟踪,这就是出现的结果:
执行:开始交易
执行:更新 ' TaskManagement.TaskInfo' 组 StatusKey = @StatusKey,ProbAddDttm = @ProbAddDttm,ProbCode = @ProbCode,ProbPriority = @ProbPriority,ProbGroup = @ProbGroup,ProbInsp = @ProbInsp,Activity = @Activity,UpdateDttm = @UpdateDttm,Asset = @Asset,Address = @Address, TaskStartDttm = @TaskStartDttm,MaintenanceScheduleSetup = @MaintenanceScheduleSetup,MaintenanceScheduleBatch = @MaintenanceScheduleBatch,ProbZone = @ProbZone,ProbContractor = @ProbContractor,ProbNotes = @ProbNotes,JobCompleted = @JobCompleted,Resolution = @Resolution,Result = @Result,ActType = @ActType,投诉= @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:错误
执行:提交
答案 0 :(得分:0)
所以,最后,问题是我没有正确地将参数传递给库。连接的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;