【问题标题】:Android Dynamic Database SQLite Storage Best PracticeAndroid 动态数据库 SQLite 存储最佳实践
【发布时间】:2013-01-24 09:06:06
【问题描述】:

我想知道是否有人遇到过他们需要在 android sqlite 中真正动态或出现动态数据库字段的情况。

让我详细说明。

我想在我的数据库中创建两个不同的存储长度的独立字段。例如我有两个字段sprintssprint_time。所以基本上我希望用户能够选择他们将要进行的冲刺数量,我将创建为array,例如String [] sprints = new String [userEnteredValue];,其中int userEnteredValue; 将指定他们将进行的冲刺数量,然后我想循环在每个位置添加string,例如

for(int i = 1; i < sprints.length;i++){
 sprints[i] = "Sprint_"+i;
 }

然后我想使用int userEnteredValue; 创建第二个数组,但仅作为每个冲刺时间的占位符。这就是我感到困惑的地方。所以很明显我只是创建另一个array 这样String [] sprint_time = new String [userEnteredValue]; 并遍历这个数组来创建这样的占位符:

for(int i = 0; i < sprint_time.length; i++){
 sprint_time[i] = "SprintTime_"+i; // place holder for each sprint time
 }

在我的 android 活动中创建这两个之后,我希望用户在完成每个 sprints[i] 后能够输入时间。

我知道为了将这些值存储在数据库中,我需要将每个 array 转换为 String,这不是我如何做到这一点的问题。

我的问题更多的是有没有人这样做过,有没有我可以参考的例子? 另外,这是实现这一目标的最佳方法还是我应该使用不同的方法?

【问题讨论】:

    标签: android arrays dynamic android-sqlite


    【解决方案1】:

    我可能会使用更多的表格并做一些不同的事情,例如我可能有两个表格,Workouts 和 SprintTimes

    [Workouts   ]     [SprintTimes    ]
    |           |     |ID             |
    |ID         |  -> |WorkoutID      |
                      |SprintPosition |
                      |Time           |
    

    我不确定您所说的是否是锻炼,但设置会相似。

    您将创建一个锻炼,然后为指向锻炼的每个冲刺创建一行。

    这样做也将使您的查询更容易,而不必动态构建。例如,您可以通过 group by 和 sum 获得锻炼的总时间:

    select WorkoutID, SUM(Time) from SprintTimes group by WorkoutID

    【讨论】:

    • 嗯不错不错很酷我会试一试。是的,它将被视为锻炼对象。为了概念起见,我只是试图让它更简单。我的最后一种方法每次都限制用户进行编辑。所以基本上他们必须创建一个锻炼,并且每个连续的组必须是相同数量的代表,或者在这种情况下,每个连续的冲刺必须是相同的时间,这对用户和可用性都没有好处。我想我可能正在接近这个错误。感谢您的输入。如果我的尝试成功与否,我将发布更新的代码和更多问题
    猜你喜欢
    • 2011-05-10
    • 2011-03-23
    • 1970-01-01
    • 2012-09-16
    • 2011-03-22
    • 2012-04-28
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多