如何在android sqlite中动态添加表?

时间:2016-03-08 17:01:08

标签: android sqlite

几个小时后搜索几乎所有与代码相关的网站,但仍然没有找到解决方案,我终于在这里提出了我的问题并希望得到答案(或许多)。

我正在创建一个获取服务器发送消息的Android应用程序。不同的客户端可以发出这些消息,我的应用程序应该能够

  1. (首先创建)检查db
  2. 中是否已有用户特定的表
  3. 如果没有动态创建一个(或更多时间)
  4. 所以我的问题更准确地说是当一个到目前为止未知的用户发送数据时我如何能够随着时间的推移创建新表。 我不希望在我的dbhelper类中预定义表,而是让它们动态构建。

2 个答案:

答案 0 :(得分:1)

您不必动态创建表。在您描述的情况下(如果我理解正确),您可以有两个表。消息表和用户表。因此,您的架构看起来像这样。

Users
id | user
---------
1  | joe
2  | jane
3  | jack

Messages
id  | user | message
--------------------
1   |  2   | "hi joe!"
2   |  1   | "How are you Jane?"
3   |  1   | "And jack, what about you?"
4   |  3   | "Hi guys. What's up?"

现在,您的消息可能不是像这样的聊天消息,但这个想法仍然存在。有两个单独的表。一个用户,一个用于消息,这样您就可以将所有消息保存在一个表中,并通过用户ID识别关联用户。

理想情况下,Messages表上的users列也应该有一个外键约束。

答案 1 :(得分:0)

您需要的是一个处理数据库的单例类,并且具有您将从其他类使用的方法。我会创造这种东西:

netfilter-persistent.service - netfilter persistent configuration
   Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled)
   Active: failed (Result: exit-code) since Tue 2016-02-23 08:14:47 CET; 39s ago
  Process: 251 ExecStart=/usr/sbin/netfilter-persistent start (code=exited, status=1/FAILURE)
 Main PID: 251 (code=exited, status=1/FAILURE)

Feb 23 08:14:47 debian netfilter-persistent[251]: run-parts: executing /usr/share/netfilter-pers...art
Feb 23 08:14:47 debian netfilter-persistent[251]: run-parts: /usr/share/netfilter-persistent/plu...e 2
Feb 23 08:14:47 debian netfilter-persistent[251]: run-parts: executing /usr/share/netfilter-pers...art
Feb 23 08:14:47 debian systemd[1]: netfilter-persistent.service: main process exited, code=exit...LURE
Feb 23 08:14:47 debian systemd[1]: Failed to start netfilter persistent configuration.
Feb 23 08:14:47 debian systemd[1]: Unit netfilter-persistent.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.

但是你需要考虑的是表通常不是动态创建的。如果您需要经常这样做,那么您的架构缺乏一些设计,并且会很快污染您的目录。你能准确地发布你正在存储的内容吗?这样我就可以提供更好的模式设计,这可以使所有这些表创建变得不必要。