Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQLite数据库是何时创建的?_Java_Android_Sqlite - Fatal编程技术网

Java SQLite数据库是何时创建的?

Java SQLite数据库是何时创建的?,java,android,sqlite,Java,Android,Sqlite,我正在android中学习SQLite数据库,据我所知,我们通常使用下面的模式(参见代码片段),我的理解是 当实例化notedHelpeobj时,构造函数是 调用时,它将检查是否创建了相应的数据库 如果没有,请创建数据库并调用onCreate来创建表 如果是,请查看是否需要升级数据库,如果是,请调用onUpgrade 我主要关心的是在创建数据库时,我认为应该在构造函数中处理它,我的理解正确吗 public class NoteDbHelper extends SQLiteOpenHelp

我正在android中学习SQLite数据库,据我所知,我们通常使用下面的模式(参见代码片段),我的理解是

  • 当实例化
    notedHelpe
    obj时,构造函数是 调用时,它将检查是否创建了相应的数据库
  • 如果没有,请创建数据库并调用
    onCreate
    来创建表
  • 如果是,请查看是否需要升级数据库,如果是,请调用
    onUpgrade
  • 我主要关心的是在创建数据库时,我认为应该在构造函数中处理它,我的理解正确吗

        public class NoteDbHelper extends SQLiteOpenHelper{
    
        private static final int DATABASE_VERSION = 1;
        private static final String DATABASE_NAME = "notes_db";
    
        public NoteDbHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
    
         public void onCreate(SQLiteDatabase db) {
             String createNoteTableSql = "CREATE TABLE ...";
             db.execSQL(createNoteTableSql);
         }
    
        @Override
         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // Drop older table if existed
             db.execSQL("DROP TABLE IF EXISTS " + NOTE_TABLE_NAME);
    
            // Create tables again
            onCreate(db);
        }
    
    公正的观点

    onCreate
    是从
    getDatabaseLocked
    调用的,它是从
    getwriteabledatabase
    getReadableDatabase
    调用的,只需查看即可

    onCreate
    getDatabaseLocked
    调用,这是从
    getwriteabledatabase
    getReadableDatabase
    调用的。否,在构造帮助器时不创建数据库。而是在第一次使用时打开(并在需要时创建)。政府对此非常清楚:

    创建和/或打开将用于读取和 写作。第一次调用它时,将打开数据库 和
    onCreate(SQLiteDatabase)
    onUpgrade(SQLiteDatabase,int,int)
    和/或将调用onOpen(SQLiteDatabase)

    原因在课程概述中:

    此类使
    ContentProvider
    实现更容易延迟 打开并升级数据库直到第一次使用,以避免阻塞 通过长时间运行的数据库升级启动应用程序。

    否,在构造辅助对象时不会创建数据库。而是在第一次使用时打开(并在需要时创建)。政府对此非常清楚:

    创建和/或打开将用于读取和 写作。第一次调用它时,将打开数据库 和
    onCreate(SQLiteDatabase)
    onUpgrade(SQLiteDatabase,int,int)
    和/或将调用onOpen(SQLiteDatabase)

    原因在课程概述中:

    此类使
    ContentProvider
    实现更容易延迟 打开并升级数据库直到第一次使用,以避免阻塞 通过长时间运行的数据库升级启动应用程序。


    onCreate方法将在首次访问数据库后调用。对数据库进行查询,将调用onCreate。类似的问题已经提出,onCreate方法将在首次访问数据库后调用。对数据库进行查询,将调用onCreate。类似的问题已经提出
    public SQLiteDatabase getWritableDatabase ()