【问题标题】:Android Database Insert At The BeginningAndroid 数据库插入开头
【发布时间】:2011-12-21 20:48:36
【问题描述】:

我想在开始时为我的应用程序插入所需的数据,我将使用这些数据。而且我要插入一次,不能有重复。因此,在“onCreate”中,我这样做:如果表(例如学生等)的行数为 0,我正在插入学生。我认为这不是最好的方法。因此我想了解是否有更好的方法。

【问题讨论】:

  • “一开始”是指用户开始使用应用程序的任意会话时,还是表示第一次使用该应用程序?
  • 我的意思是安装后。数据会在应用安装过程中插入,之后用户启动应用时,不能有插入操作。

标签: android database sqlite insert


【解决方案1】:

如果您希望在安装时而不是任何其他时间填充数据库,则唯一合理的选择是将预先填充的数据库与您的 APK 一起打包为内置资源。这样做的好处是可以简化您的应用。

或者,如果您为您的数据库实现SQLiteOpenHelper,那么您在SQLiteOpenHelper.onCreate(SQLiteDatabase) 期间插入的任何内容都只会在您的应用程序首次运行或有人清除您的应用程序的所有数据时插入(或多或少无论如何,让您重新安装)。当您调用getWritableDatabase()getReadOnlyDatabase() 方法之一来获取数据库引用时,SQLiteOpenHelper 超类知道是否运行创建代码。

值得注意的是,Android 并没有真正让您像桌面软件那样运行安装程序。如果您需要进行任何设置工作,您需要能够检测并记住您的应用之前运行的时间。

【讨论】:

  • 首先感谢您的回复。你能给第一个选项举个例子吗?我正在使用 SQLiteOpenHelper 并在我的主要活动的“onCreate”中插入数据。因此,它总是在应用启动时插入相同的数据。
  • 您将在构建过程中创建一个 SQLite 数据库文件并将其包含为 raw resource。查看该表以获取更多信息。
  • 您需要将您的插入语句放入您的SQLiteOpenHelper 实现的onCreate(SQLiteDatabase) 调用中。几乎可以肯定,这就是您的表创建语句所在的位置。在同一个地方插入数据,并且只有在第一次创建数据库文件时才会插入。
猜你喜欢
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
相关资源
最近更新 更多