2012-08-13 24 views
0

我正在构建一个应用程序,它有一个内部使用SQLiteOpenHelper在内部创建的两个表的数据库。当应用程序运行时,它将接收一些数据并将其保存到表中。我想要的是在应用程序有效时清除数据表开始了吗?如何删除应用程序启动时从Android重新创建SQLite数据库中的表?

我看着这个帖子How can I clear an SQLite database each time I start my application?这是不清楚如何使用应用程序。

+0

你的问题不清楚。每次用户启动主/启动器“活动”时,还是仅在启动“应用程序”(或“应用程序”)时,是否都不想清除数据库?请注意,“活动”与通用术语“应用”或“应用”不同。 – Squonk 2012-08-13 23:32:02

+0

我的应用程序只有一项活动。我正在使用google maps api构建应用程序。我试图在应用程序启动时将gps跟踪保存到数据库中,并且我想清除现有数据库中的数据。 – ChanChow 2012-08-15 04:57:26

回答

2

SQLiteOpenHelper在内存中创建数据库的能力,如果你通过构造函数nullname。可能这就是你要找的。

例如:

SQLiteOpenHelper sqloh = new SQLiteOpenHelper(context, null, null, 1); 
SQLiteDatabase sqldb = sqloh.getWritableDatabase(); 

将创建一个内存分贝。

+0

+1不知道你可以做到这一点! – bytebender 2012-08-13 23:36:05

+0

@dtmilano请你举个例子.. – ChanChow 2012-08-21 03:39:41

1

SqliteDatabase使用openOrCreate(...)方法,该方法打开数据库(如果存在),并在不存在时创建并打开数据库。请参阅docs,因为您可以删除在执行任何数据库调用之前创建的数据库文件,以便每次都创建一个新文件。

这太问题给出了文件的位置:Location of sqlite database on the device

还有其他途径将只是删除表中的数据应用程序启动时通过执行一个SQLite查询:

DELETE FROM your_table 

我如果你打算在每次应用程序启动时删除它,那么你只需要考虑一下你真的需要一个数据库。如果你不更新数据,那么为什么不只是用数据“缓存”一个json文件。 GSON库非常适合使用json并用很少的代码将其转换为java对象,与使用sqlite相比,它的代码更少。但是,这个建议来自于对你想要完成的事情没有大的了解。然后,您只需在应用程序启动时删除json文件而不是db文件。

+0

如果我使用这个DELETE FROM ...语句,它不会清除具有自动增量属性的主键吗?我甚至需要清除,还有一件事是我应该从哪里调用删除查询?它应该放在OnCreate()函数中吗? – ChanChow 2012-08-16 04:06:42

+0

SQLiteOpenHelper类中onCreate的生命周期是什么?每次我们尝试访问创建的数据库时都会调用它吗? – ChanChow 2012-08-16 04:47:05

+0

我会给@ dtmilano的内存sqlite数据库一个尝试......这听起来像最简单的解决方案。 – bytebender 2012-08-16 16:21:35

相关问题