android - 从文本文件更新 sqlite 数据库

标签 android database sqlite updates

本人是数据库开发新手,不便提问请见谅。我正在开发一个 Android 应用程序,它的数据库有一个包含数千个条目的表。该表是从后端 Oracle 数据库生成的,每次在 Android 应用程序上单击更新按钮时,都必须使用后端数据库中的更改进行更新。

我想出的程序在这里:

  1. 通过每三个小时运行一个 SQL 脚本,从 Oracle 数据库生成一个文本文件。

  2. 每次需要时,Android 应用程序都会下载此文本文件、转储旧表并将其解析为新表。

我的问题是,由于文本文件非常大,有数千行(大约 5MB),下载和解析需要很长时间,但它需要(几乎)是即时的。

我的问题是:

  1. 有没有更好的方法从 Oracle 后端高效地更新 SQLite 数据库?

  2. 由于解析时间太长,有没有办法设置 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/

相关文章:

ios - SQLite 中 FROM 子句中的绑定(bind)参数

mysql - 在 MySQL 数据库中创建随名称自动递增的列

database - 为 Sybase 表和索引生成 DDL

java - 如何从 Android studio 中的 TextView 解码 RSA 公钥(在 java 中)

java - 从顶部找到 3 个数字,考虑比相同的值

android - 我可以使用 Google 云端硬盘代替服务器吗

python - 操作错误 : no such table: entries

sql - 从 sqlite 数据库中选择不同的一对值

java - 如何让方法像glide库一样流畅?

java - 使用按钮打开 Android 搜索