【问题标题】:Filling SQLite Database with Data Once一次用数据填充 SQLite 数据库
【发布时间】:2013-07-09 12:46:45
【问题描述】:

在我的应用程序中,我使用 SQLite DBhelper 类(扩展扩展 SqliteOpenHelper),它覆盖了我的 onCreate、OnUpgrade 方法。我还需要创建一个DBManager-class 以确保从其他类对我的数据库的受控访问....

现在我想为数据库设置我的数据。此数据必须在我的应用程序第一次启动时创建一次。如何确保数据只从DBManager 创建一次?我想从DBManager-class 调用我的设置 DB-Data 的方法来进行干净的软件设计....

这是来自DBManager的代码示例:

public class DBManager {
    private static final String TAG = DBManager.class.getSimpleName();

    private DatabaseHelper helper;
    private static Context myContext;
    private static DBManager instance;

    private DBManager() {
        myContext = MyApplication.getAppContext();
        if (myContext == null)
            throw new RuntimeException("MyApplication returned null-Context");
        helper = new DatabaseHelper(myContext);

    }

    public static void init() {
        if (null == instance) {
            instance = new DBManager();
        }
    }

    public static DBManager getInstance() {
        if (instance == null) {
            instance = new DBManager();
        }
        return instance;
    }
    // Some Methods to add Data and Get Data form SQL-Database

    // a Method, which creats my Objects for first App-Start; have to be called once
}

【问题讨论】:

  • 在 DBManager 类中创建一个函数,进一步调用 DBHelper 类将数据插入到 sqlite。现在,当您的活动开始时调用此 DBManager 类插入函数。
  • 这不是我的目标......在你的解释中,数据库充满了每一个新的活动生命周期!我只想在我的应用程序第一次启动时设置我的数据!
  • 在您的活动中创建一个布尔变量,并将其值默认设置为 true。然后,当您的活动开始时首先检查它的值,如果它是真的调用 DBManager 类的插入方法并将该布尔变量的值设置为假。然后,每次您的活动开始时,它都会检查该布尔变量的值,每次都会为假,并且您的活动不会调用插入函数。
  • 同样的错误解决方法!!!下一次启动我的应用程序-> 再次设置我的应用程序的数据!!

标签: android sql android-sqlite


【解决方案1】:

将插入语句(或指向插入的函数调用)放在DBHelperonCreate 方法中。第一次运行您的应用程序时,DBHelper 将识别该应用程序没有数据库,并将运行onCreate(您应该在其中创建表并插入种子数据)。之后,除非数据库被删除,否则onCreate 不应再次运行。

【讨论】:

  • 这也是我目前的解决方案;)但在我看来,这是一个不干净的解决方案!因为我想用我的 DBManager 处理来自其他类的所有 DB-Stuff... 我正在寻找具有相同结果的解决方案,但是我的数据必须从 DBManager 插入一次,因为我的数据是来自其他类的对象,我用 ormlite 持久化到数据库中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 1970-01-01
相关资源
最近更新 更多