将本地 sqlite 文件发送到服务器
Posted
技术标签:
【中文标题】将本地 sqlite 文件发送到服务器【英文标题】:Send local sqlite file to server 【发布时间】:2014-01-30 12:16:37 【问题描述】:我有一个包含许多用户的数据库,我想将其存储在本地和我的服务器上。每当用户更新任何信息时,我都会使用核心数据库在本地数据库中成功更新它。但是如何将这些信息更改为服务器?我没有得到这个请帮忙? 每次用户更新他的信息时,我都会考虑将 sqlite 文件发送到服务器。但是如何将sqlite文件的数据发送到服务器?
【问题讨论】:
你在使用任何网络服务吗? 当数据在服务器上时,它是否需要访问/更新数据库,或者这只是一个备份副本,只会在你的 ios 应用程序上使用? (如果是 CoreData,我假设后者)。 我希望只传输更新,而不是整个 sqlite 文件。 @Ajay 不,我公司有自己的服务器。 @***foe 服务器上的数据库将作为主数据库,核心数据库是辅助数据库。如果用户在离线模式下更改了其设置,则其更改将在核心数据库中自动更改,但是当他可以访问互联网时,我想使用核心中的当前设置更改服务器上存在的先前设置本地存在的数据库。如何做到这一点? 【参考方案1】:将最后一次更新的列添加到本地数据库。 (我认为可能有一种方法可以让 SQLite 为您半自动填写此内容,但即使“手动”执行也没什么大不了的。)然后,当您要上传更新时,查询自上次更新的行上传。作为 JSON 记录发送到服务器。
您还可以保留一个单独的表来跟踪更新,但这适用于更复杂的场景。
【讨论】:
【参考方案2】:你必须为此使用一些策略。以下是对这项工作的简短说明。
数据库结构
网络服务
您必须在本地和服务器端设计数据库并管理标志(布尔)和更新时间。
就像您启动应用程序时一样,您必须检查本地数据并获取上次更新日期并向服务器发送此日期之后的新更新请求。如果有任何更新,那么您可以通过该 Web 服务发送数据并在本地设备上处理该响应。
当您在本地设备上进行一些更改时,您必须管理标志、更新时间和创建日期。标志将显示它在服务器上是否有更新。如果更新,则 Y,否则为 N。并且您必须使用此发送创建和更新日期。
在此请求期间,您必须在同一时区进行管理。您可以使用标准 UTC 时区,因为用户可能会切换到不同的时区,因此请处理好这个问题。
如果您需要更多说明,可以在我们的聊天室https://chat.***.com/rooms/43424/coders-diary
这种方法绝对适合你。
【讨论】:
@ 是的,我认为这是一种更好的方法,发送更新的字段而不是整个 sqlite 文件。假设如果用户更改了他的密码,那么我将如何将更新后的密码发送到服务器。你能告诉我这个的代码sn-p吗?如何检查数据是否已接收到服务器?有没有被调用的委托方法? 不,没有委托方法。您必须开发一些自定义委托来执行此操作。有关更多信息,我已向您提供了我的聊天 URL。以上是关于将本地 sqlite 文件发送到服务器的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Flutter将数据SQLite(离线)发送到服务器MySQL?
使用 POST、OKHttp 将数据从 SQLite 发送到 appServer
PyQt5 - 从 sqlite3 复制到 QTableWidget 的 SQL 行不显示