1

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

我想出的程序在这里:

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

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

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

我的问题是:

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

  2. 由于解析时间太长,有没有办法设置 SQLite 来处理文本文件,跳过解析?

4

2 回答 2

2

如果可能,您应该公开一个连接到数据库的 Web 服务,而不是每次都下载整个内容。该 Web 服务应该有一个 GET 方法,允许您查询在指定时间内更新的行。在您的 android 应用程序中,您可以保留每次更新的日期,然后 Web 服务调用将根据此 WHERE 子句限制返回的行。类似这样的东西:

SELECT MT.* FROM MY_TABLE AS MT
WHERE MT.last_modified > last_requested_time;

这允许您仅下载更新。在您的 android 应用程序中进行更新后,您可以对 SQLite 引擎进行 SQL 调用并根据主键更新必要的行。

关于您的第二个问题,我认为基于文件的加载不是正确的方法(在初始加载之后),因为它可能会消耗大量移动数据,而且会在手机上造成高 CPU 负载这对于移动设备来说是不可取的。

于 2013-08-06T20:04:22.480 回答
0

我想办法如下: 1 - 我在服务器端运行一个脚本,生成 csv 格式的表格,供 android 应用程序使用;
2 - 以及另一个导入 csv 数据并创建 SQLite 数据库的脚本。3 - android 应用程序检查服务器是否有更新的数据库。如果存在,它会下载它并使其对应用程序可用,如此处所述

于 2013-09-16T16:16:38.943 回答