2010-07-17 45 views
1

我有一个小部件,它当前从一个数组中取一个随机字符串,并将其设置为更新时的文本视图。这里的问题是,同一个项目可以连续多次重复使用,因为字符串是'随机的'Android Widgets:数据库的“插入”步骤将在何处发生?

为了解决这个问题,我打算创建一个持有字符串文本的表,并将int viewednum并在每次调用“获取文本”时递增查看的数字。 (在小部件中更新)。

我的问题:如果我将插入语句放在小部件中,每次'update'时都不会插入数据吗?

它会更好地进入DBadapter类的某个地方吗?我只是不确定最好的方法,以确保我不输入重复的数据。如果有更好的选择,比如在某处保存一个csv文件,并使用它,我可以开放它,它似乎是一个sqlite数据库是要走的路。

谢谢你的时间。

回答

0

这取决于你的onUpdate方法的作用。如果每次调用onUpdate都会从数据库中获取一个随机的String,那么这就是放置它的地方。但是,如果您在onUpdate期间没有获取字符串,那么您应该将它放在您访问数据库的方法中。我认为你的困惑是关于onUpdate的目的。每次用户滚动页面并看到您的小部件时,onUpdate都不会被调用;它会按照您指定的时间表定期调用,并且在您的情况下,它的整体目的是从数据库中获取新的String。

至于你的第二个问题,是的,SQlite数据库是这样做的方式:)我还没有试过保存一个csv文件或类似的东西,但我想这会比仅仅使用一个更复杂的数据库。

+0

谢谢你的帮助= D – user394877 2010-07-18 04:13:22

0

在要保持唯一性的列上声明具有UNIQUE约束的数据库,然后在INSERT语句中通过ON CONFLICT设置所需的行为。 ON CONFLICT REPLACE ...表示最近的INSERT覆盖。 ON CONFLICT IGNORE ...保留旧版本。