Android:在应用程序启动时,仅将数据插入本地数据库一次
我有两个问题:Android:在应用程序启动时,仅将数据插入本地数据库一次,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我有两个问题: 我想将web服务中的数据插入本地SQLite数据库。我只想插入此数据一次,下次将不会从web服务加载此数据。 我尝试过使用静态变量,但没有成功 静态int updatetime=0 如果(UpdateOneTime==0){ getData() UpdateOneTime++ } 如果我想重新加载数据,这意味着每次应用程序启动时,它都会从服务器获取数据,并通过删除表中以前的数据插入数据库。 我试着调用onUpgrade(sqlitedatabasedb,intoldversion
不在静态变量中保留插入值\未插入值。每次应用程序启动时的值都将具有默认值。在第一次数据插入后,您可以在首选项中保存一些值,然后在每次应用程序启动时检查该值。对于1,您应该@override函数
onCreate
,该函数将创建您的数据库,然后您可以在那里执行一些查询。仅当您请求数据库且设备注意到数据库尚不存在时,才会调用此函数
二号。如果我记得的话,您不需要手动调用它,而是在升级数据库版本时调用的函数。这是通过构造SQLiteOpenHelper
类来管理的
注意:
onCreate
和onUpgrade
都是在创建数据库和升级数据库结构时调用的函数,而不是数据。第一点:您可以遵循Marco的答案
但如果我是你,
我将创建一个默认值为标志的配置表,并使其等于false。
在活动中的oncreate()方法中,如果该值等于false,我将查询该值,然后我将从不从WS-Server加载该数据。如果它等于true,那么这意味着我以前加载过数据,所以我可以使用以前保存在数据库中的本地数据
如果为false,您将从WS加载该数据,并且在确保加载并插入成功后,您必须更新该标志以使其值等于true,以避免在下次打开应用程序时重新加载数据
我认为您可以使用SharedReference而不是配置表
第2点: 您希望每次应用程序删除旧数据并重新加载和插入数据时: 您将正常创建SQLite DB,然后可以创建一个扩展应用程序类的类,该类是打开应用程序后将加载的第一个类,它包含onCreate()方法,您可以先删除所有记录,然后重新加载所有数据并将其插入本地SQLite DB 注意:不要忘记在androidMainfest.xml文件中添加一个标记来引用您的应用程序类,这是一个必须的步骤 通过internet阅读有关应用程序类示例的更多信息。