2013-03-15 98 views
0

我正在构建一个应用程序,它是一个表单生成器(它使用基于配置文件的SQLite数据库创建表单)。问题是数据库永远不会相同,所以我需要使其具有动态含义,我希望能够指定数据库的所有表行和表。动态生成SQLite数据库

我遇到的问题是,因为它是一个配置文件,所以当我创建数据库时,我还不知道表和/或表的行是什么,所以我不能依赖数据库的onCreate()

我想知道是否有更好的方法来进行,而不是重写onCreate()什么也不做,并使我自己的tableCreate()功能。

我不知道这是否足够清楚,因为英语不是我的母语,但如果需要,我会编辑我的问题。顺便说一句,我是新来的机器人,所以感谢snipet +解释。

  • 当应用程序加载时,它会创建使用被推到应用程序的配置文件(一个简单的文本文件),数据库(仅当数据库中不存在)。

  • 然后它再次基于配置文件创建表(表行的名称和数据类型)。

  • 该应用程序根据配置文件建立一个表单,该表单的属性可以让我将答案保存在先前创建的数据库中。

此应用程序的目标是能够有效地创建新的窗体,并以一种非常快速的方式来收集给定人的一些信息。

+1

为什么不根据表单构建sql字符串,并根据需要创建数据库? – rennoDeniro 2013-03-15 20:17:42

+0

如何将创建表的新构建字符串传递给onCreate()方法。这是我的问题,我需要能够在我有表格行之前创建数据库。 – Placebo 2013-03-15 20:32:00

+0

好的,您能否在您的问题中解释您想要采取的每一步,以便我能够充分理解。从应用程序开始到结束。谢谢 – rennoDeniro 2013-03-15 20:39:24

回答

1

好的,所以我设法建立了一个解决方法: 我想到的是我有一个带有4个字段(_id,farmerId,fieldName和fieldValue)的数据库,这使我可以为特定的某种类型的值键农民。

然后,我创建了一些函数,它们生成一个JSONObject,其中包含关于特定农民的不同行并将其返回给我的活动。这样,如果一个“对象”需要5或6个字段,这并不重要。

+0

我选择这个解决方案的原因是,onUpgrade像创建一个临时表来保存数据,而我删除表并创建一个适合新配置文件的新表。然后把所有东西都转回去。这个解决方案更加灵活,并且对我获得的每个农民的“田地”数量并不严格。 – Placebo 2013-03-22 15:14:48