1

I have two queries:

  1. I want to insert the data from the web services into the local SQLite DB. I want to insert this data only once then the next time it will not loaded from the web services. I have tried using Static variable but that didn't worked.

    static int UpdateOneTime=0;

    if (UpdateOneTime==0) {

    getData();

    UpdateOneTime++;

    }

  2. If I want to reload the data again means when app start every time it will get the data from the server and insert into the DB by just deleting the previous data in the table. I have tried by just calling the onUpgrade(SqliteDatabase db, int oldversion,int newversion); But it didn't worked. So how to solve these two issues. Suggest me something.

4

3 回答 3

1

不要在静态变量中保留插入\未插入的值。每次应用程序启动时的值都会有默认值。第一次插入数据后,您可以在首选项中保存一些值,然后在每次应用启动时检查它

于 2013-02-06T13:50:47.503 回答
1

对于 1.,您应该 @overrideonCreate将创建您的数据库的函数,然后您可以在那里执行一些查询。只有当您请求数据库并且设备注意到数据库尚不存在时,才会调用此函数。

第 2 个。如果我记得的话,您不必手动调用它,而是在升级数据库版本时调用它。这是通过SQLiteOpenHelper类的构造来管理的。

注意:onCreateonUpgrade都是在创建数据库和升级数据库结构时调用的函数,而不是数据。

于 2013-02-06T13:50:57.423 回答
0

对于第一点:您可以按照 Marco 的回答。

但是如果我是你,我会创建一个配置表,它的默认值是一个标志,让我们让它等于 false。在活动的 oncreate() 方法中,如果它等于 false,我将查询该值,然后我永远不会从 WS 加载该数据。如果它等于真,那么这意味着我之前加载了该数据,所以我可以使用之前保存在数据库中的本地数据。

如果为 false,您将从 WS 加载该数据,在确保加载并成功插入后,您必须更新此标志以使其值等于 true,以避免在下次打开时重新加载数据应用程序。

我认为您可以使用 sharedPreference 而不是配置表。


第 2 点:您希望每次应用程序删除旧数据并重新加载并再次插入数据:您将正常创建 SQLite DB,然后您可以创建一个扩展 Application 类的类,该类是第一个类打开应用程序后加载,它包含一个 onCreate() 方法,您可以先删除所有记录,然后再次重新加载所有数据并将其插入本地 SQLite DB。

注意:不要忘记在 androidMainfest.xml 文件中添加一个标签来引用您的应用程序类,这是必须的步骤。

在 Internet 上阅读有关应用程序类示例的更多信息。 http://developer.android.com/reference/android/app/Application.html

于 2014-04-03T13:19:25.840 回答