Android 在数据库中写入次数过多

Android 在数据库中写入次数过多,android,sqlite,gps,routes,Android,Sqlite,Gps,Routes,我试图在数据库中存储一些使用DDMS从KML文件中获取的GPS数据,问题是每次运行程序时,我都会存储这些数据。这意味着我将它存储了几次。之后,我必须根据存储在Sqlite中的GPS数据创建路线 现在的问题是,我不能有这个路线正确,因为在我的数据库是一个混乱。这么多的数据存储了太多次。有人知道我如何才能正确地完成这项工作吗。我在android 2.1上运行,重写数据库初始化逻辑,以便它存储数据库已初始化的指示器。(SharedReferences对此很有用。)然后测试指示器,如果指示器显示数据库初

我试图在数据库中存储一些使用DDMS从KML文件中获取的GPS数据,问题是每次运行程序时,我都会存储这些数据。这意味着我将它存储了几次。之后,我必须根据存储在Sqlite中的GPS数据创建路线


现在的问题是,我不能有这个路线正确,因为在我的数据库是一个混乱。这么多的数据存储了太多次。有人知道我如何才能正确地完成这项工作吗。我在android 2.1上运行,重写数据库初始化逻辑,以便它存储数据库已初始化的指示器。(SharedReferences对此很有用。)然后测试指示器,如果指示器显示数据库初始化已经完成,则在启动时跳过数据库初始化。

如果每次只是插入数据,则可以切换为替换。然后,这将替换现有数据(如果数据匹配)。但就我个人而言,我会更改您的数据库设置代码

一个容易使用的东西是用户版本pragma。这允许您获取或设置数据库的“版本”。它默认为0,因此您可以在应用程序启动时检查它,如果它为0,则初始化DB,然后将其设置为1。随后的应用程序启动将跳过数据库初始化

PRAGMA user_version
PRAGMA user_version = 1

如果我不想问太多的话,你有没有一个使用SharedReferences初始化数据库的例子,因为这是我迄今为止从未听说过的……我不知道它是如何工作的。谢谢!SharedReferences(直接)与数据库初始化无关。这只是一个方便的地方来存储一个标志,它将在应用程序执行之间保持。还有其他选项--请参阅主题。您也可以只检查数据库是否存在,并假设如果存在,它也已初始化。您对数据库内容的预期行为是什么?顺便说一句,允许编辑问题以澄清它。不需要开一个新的。