Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite持久更新_Sqlite_Persistence_Uwp - Fatal编程技术网

SQLite持久更新

SQLite持久更新,sqlite,persistence,uwp,Sqlite,Persistence,Uwp,我在WindowsUWP(10)上使用SQLite 这就是我正在做的: 开放连接 开始交易 更新行 提交事务 密切联系 然而,数据库中的值实际上并没有写入表中。重新加载记录时(在断开并重新连接或未断开连接后),该值保留在调用更新之前 我还有什么事要做吗?在SQLite的DB浏览器中,有一个名为“写入更改”的菜单项。那有什么用?只是普通的承诺?在浏览器中,只有单击此菜单项,更改才会提交 此外,我对连接进行了跟踪,结果如下: 正在执行:开始事务 执行:更新 “TaskManagement.TaskI

我在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:错


执行: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;