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
在android中向SQLite数据库添加大型静态文本数据_Android_Sqlite - Fatal编程技术网

在android中向SQLite数据库添加大型静态文本数据

在android中向SQLite数据库添加大型静态文本数据,android,sqlite,Android,Sqlite,我正在开发一个应用程序,它在很大程度上提供了大量静态文本信息。我打算让应用程序离线,这样就不会从服务器获取数据。正如已经在许多帖子中讨论的那样,根据我的理解,我有以下选择: 将其存储在XML资源文件中 “资源”文件夹中的文本文件 SQLite数据库 虽然最初我决定使用XML,但对于数据的适当排序、过滤和索引等功能,SQLite非常方便。我读了一些关于各种方法之间权衡的文章。现在,如果我在SQLite中存储数据: 我应该从哪里输入数据?我不需要先将其存储在文本文件或Strings.xml中吗? 如

我正在开发一个应用程序,它在很大程度上提供了大量静态文本信息。我打算让应用程序离线,这样就不会从服务器获取数据。正如已经在许多帖子中讨论的那样,根据我的理解,我有以下选择:

将其存储在XML资源文件中 “资源”文件夹中的文本文件 SQLite数据库 虽然最初我决定使用XML,但对于数据的适当排序、过滤和索引等功能,SQLite非常方便。我读了一些关于各种方法之间权衡的文章。现在,如果我在SQLite中存储数据:

我应该从哪里输入数据?我不需要先将其存储在文本文件或Strings.xml中吗? 如果是的话,那么我将需要解析多个文件以将其插入数据库表中 然后读取表以在视图中显示数据,这导致了冗余,因为我可以在解析XML后直接填充视图,并且将dataXML和数据库的大小增加了一倍。我确信在AndroidStudio中没有什么比在生成apk时从某个资源提供数据库,而不是将该资源作为apk的一部分捆绑起来更合适的了。所以我的问题本质上是如何有效地将SQLite用于大型静态文本数据?谢谢 对不起,如果我的描述有点太长了


编辑:当应用程序正在使用时,也不会有数据操作

说清楚点,你的问题更具描述性。。 以下是我对如何在不冗余处理的情况下解决此问题的看法:

以下是需要处理的两种情况:

场景1:网络可用

步骤1:从服务器获取数据时,将数据获取到XML中。现在创建一个AsynTask ParseXML,它将解析XML

步骤2:现在,在ParseXML的postExecute方法中,做两件事

一种是将解析后的数据存储到SQLite数据库中以供脱机使用

第二种方法是直接将解析后的XML数据填充到视图中,正如您在问题中提到的,有一种方法可以让您考虑XML数据并显示它

我相信通过这种方式,您将能够节省将数据存储到数据库然后显示的时间

场景2:当internet不可用时脱机显示数据 正如您所说,从SQLite查询数据并显示在您的UI上

另外,为了回答您问题的其余部分,您没有浪费内存,因为您也需要离线存储,而SQLite是这种需要进一步处理的存储的有效工具。

我认为您应该使用Green DAo,它是一种开源的安卓ORM。 它易于处理数据。它为访问、插入/更新和删除数据提供了便利


阅读此

虽然场景1似乎很有用,但正如我所说的,我打算让应用程序离线,所以我无法使用它。对于场景2,您恰当地说,如果离线数据是应用程序的要求,那么它不会浪费内存,所以可以先在资源中存储数据并将其存储到数据库中?为什么不能使用场景1?你能解释一下吗?没有从网络上获取数据