似乎 SQLite(第一次印象)临时存储它的数据,同时执行 SQLiteOpenHelper 并在那里创建表,并在 onCreate 方法中插入行。问:是否有能力永久存储数据,并且每次应用启动时不创建数据库和表?据我了解,当用户退出应用程序时,数据会被杀死?
抱歉我的英语和一个蹩脚的问题 - 我是 Android 新手 =) 提前致谢。
4 回答
你的第一印象是错误的。SQLite 表在 Android 中是持久的——它们作为文件存在于基于应用程序包 ID 的特定目录中。
SQLiteOpenHelper 的想法是将数据库创建和数据库升级封装在一个地方,这样其他使用数据库的代码就不必担心这些事情——它只是调用了助手,当助手返回时,数据库正是应有的样子。
这就是为什么帮助程序有一个“onCreate”方法(在数据库不存在时使用)和一个“onUpdate”方法(在数据库已经存在但版本号不同时使用)。
仅当数据库不存在时才创建数据库。这是唯一一次onCreate
调用该方法。创建后,数据库将一直存在,直到您明确删除它或卸载应用程序。
如果您SQLiteOpenHelper
用于创建数据库,它将在您第一次使用该SQLiteOpenHelper
对象时创建,它将是永久 的
请通过在真实设备上运行应用程序进行检查。您可能在模拟器上使用它。
当您在模拟器中启动应用程序时,会创建数据库,当您关闭模拟器时,由模拟器创建的临时环境被破坏,因此您将无法取回它。在实际设备上运行是否可以将数据库永久存储在您的设备上。所以下次当你打开你的应用程序时,它会连接到现有的数据库,你可以对它进行操作。
您没有提供有关您使用的是真实设备还是模拟器的信息,请描述一下。
让我知道是否还有更多 - 谢谢。