【问题标题】:Android Database Locate Data Before Application StartsAndroid 数据库在应用程序启动前定位数据
【发布时间】:2012-04-02 18:20:56
【问题描述】:

我只需要选择操作。因此,应在应用程序启动之前插入数据。最好的方法是什么?

【问题讨论】:

    标签: android database sqlite select insert


    【解决方案1】:

    使用SQLiteOpenHelper 的子类来访问您的数据库。 onCreate 将在创建数据库时调用一次。

    要使用你的数据库,你可以这样做:

    DBHelper db = new DBHelper(context);
    db.getReadableDatabase().query(....);
    db.close();
    

    要扩展SQLiteOpenHelper,请执行以下操作(未测试用于创建表的 sql!):

    public class DBHelper extends SQLiteOpenHelper {
    
    private static final String DATABASE_NAME = "database.db";
    private static final Integer DATABASE_VERSION = 1;
    
    
    DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    
    
    /*
     * Called ONCE on the very first db access (when the db file is created)
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE mytable (_id PRIMARY KEY AUTOINCREMENT, value TEXT); \n" +
                "INSERT INTO mytable (value) VALUES ('data'));");
    }
    
    /*
     * Called every time you open a database
     */
    @Override
    public void onOpen(SQLiteDatabase db) {
    }
    
    /*
     * Called ONCE if DATABASE_VERSION has changed since the last instantiation of DBHelper
     */
        @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
    

    }

    【讨论】:

    • 感谢您的回复,但我还有更多问题。我正在使用像您的 DBHelper 这样的类,而在另一个类(我称为 DBAdapter)中,我正在像您一样创建 DBHelper 的实例。但是,每次应用程序启动时都会调用它。我想创建表并插入一次数据。我该如何解决这个问题?编辑:在 onUpgrade 方法中,我将删除所有表并再次调用 onCreate。这是个问题吗?
    • 完全可以放弃一切并从头开始重新创建。如果你想通过在 onUpgrade 中调用 onCreate 来做到这一点,也可以。
    • 谢谢,但是如何避免每次应用程序启动时的插入操作?我正在我的 DBAdapter 和 MainActivity 中创建一个 DBHelper 实例,我正在创建一个 DBAdapter 实例。
    • onCreate() 在创建数据库文件时被调用一次! onUpdate() 仅在 DATABASE_VERSION 自上次启动后发生更改时才调用一次。每次您的应用打开数据库时都会调用 onOpen()。
    猜你喜欢
    • 1970-01-01
    • 2015-03-20
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    相关资源
    最近更新 更多