本人是数据库开发新手,不便提问请见谅。我正在开发一个 Android 应用程序,它的数据库有一个包含数千个条目的表。该表是从后端 Oracle 数据库生成的,每次在 Android 应用程序上单击更新按钮时,都必须使用后端数据库中的更改进行更新。
我想出的程序在这里:
通过每三个小时运行一个 SQL 脚本,从 Oracle 数据库生成一个文本文件。
每次需要时,Android 应用程序都会下载此文本文件、转储旧表并将其解析为新表。
我的问题是,由于文本文件非常大,有数千行(大约 5MB),下载和解析需要很长时间,但它需要(几乎)是即时的。
我的问题是:
有没有更好的方法从 Oracle 后端高效地更新 SQLite 数据库?
由于解析时间太长,有没有办法设置 SQLite 以处理文本文件,跳过解析?
最佳答案
如果可能,您应该公开一个连接到数据库的 Web 服务,而不是每次都下载全部内容。此 Web 服务应该有一个 GET 方法,允许您查询在指定时间内更新的行。在您的 Android 应用程序中,您可以保留每次更新的日期,然后 Web 服务调用将根据此 WHERE 子句限制返回的行。类似这样的事情:
SELECT MT.* FROM MY_TABLE AS MT
WHERE MT.last_modified > last_requested_time;
这允许您只下载更新。在您的 Android 应用程序中获得更新后,您可以对 SQLite 引擎进行 SQL 调用并根据主键更新必要的行。
关于您的第二个问题,我认为基于文件的加载不是正确的方法(在初始加载之后),因为它可能会消耗大量移动数据,而且会造成高 CPU 负载在手机上,这对移动设备来说是不可取的。
关于android - 从文本文件更新 sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18089199/