Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.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
Android 在另一个类中使用SQLiteOpenhelper-不调用OnCreate()_Android_Database_Sqlite_Database Connection - Fatal编程技术网

Android 在另一个类中使用SQLiteOpenhelper-不调用OnCreate()

Android 在另一个类中使用SQLiteOpenhelper-不调用OnCreate(),android,database,sqlite,database-connection,Android,Database,Sqlite,Database Connection,AbstractDbAdapter中有一个类,它扩展了SQLiteOpenHelper。当我调用它时,它调用默认构造函数,但不输入onCreate()函数。我成功地手动创建了DB,因此我确信所有SQL查询都是正确的。为什么不调用onCreate??这和班级里的班级有关吗 public abstract class AbstractDbAdapter { public static DatabaseHelper mDbHelper = null; public static

AbstractDbAdapter
中有一个类,它扩展了
SQLiteOpenHelper
。当我调用它时,它调用默认构造函数,但不输入
onCreate()
函数。我成功地手动创建了DB,因此我确信所有SQL查询都是正确的。为什么不调用onCreate??这和班级里的班级有关吗

public abstract class AbstractDbAdapter {
        public static DatabaseHelper mDbHelper = null;
    public static SQLiteDatabase mDb = null;

    private static int mReferenceCount = 0;
    public static class DatabaseHelper extends SQLiteOpenHelper {

        public DatabaseHelper(Context context) {
            super(context,DATABASE_TABLE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            try{
                mDb.execSQL(SCREATE_SOME_TABLE);
                    //"Database creation successful"
            }
            catch(Exception ex) {
                    //"Database creation failed"
            }

        // "Database creation successful"
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            mDb.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_NAME);
            this.onCreate(mDb);
        }
    }

    /**
     * 
     * 
     * @return this
     * @throws SQLException
     * if the database could be neither opened or created
     */
    public AbstractDbAdapter open() throws SQLException {
        if( mReferenceCount == 0 ) {

            if( mDbHelper == null )
                mDbHelper = new DatabaseHelper(//getting main activity context);

            if( mDb == null || mDb.isOpen() == false )
                mDb = mDbHelper.getWritableDatabase();
        }
        mReferenceCount++;

        return this;
    }
在帮助程序上调用
getWritableDatabase()
getReadableDatabase()
时,将调用
onCreate()
,并且数据库文件不存在。如果文件已经存在并且版本号是请求的版本号,则不会调用诸如
onCreate()
之类的回调

无论如何,在
onCreate()
中捕获异常也是个坏主意。如果方法成功返回(未抛出),则框架认为数据库已成功创建。

onCreate()
在帮助程序上调用
getWritableDatabase()
getReadableDatabase()
时,将调用该数据库文件。如果文件已经存在并且版本号是请求的版本号,则不会调用诸如
onCreate()
之类的回调

无论如何,在
onCreate()
中捕获异常也是个坏主意。如果方法成功返回(未抛出),则框架认为数据库已成功创建。

onCreate()
在帮助程序上调用
getWritableDatabase()
getReadableDatabase()
时,将调用该数据库文件。如果文件已经存在并且版本号是请求的版本号,则不会调用诸如
onCreate()
之类的回调

无论如何,在
onCreate()
中捕获异常也是个坏主意。如果方法成功返回(未抛出),则框架认为数据库已成功创建。

onCreate()
在帮助程序上调用
getWritableDatabase()
getReadableDatabase()
时,将调用该数据库文件。如果文件已经存在并且版本号是请求的版本号,则不会调用诸如
onCreate()
之类的回调


无论如何,在
onCreate()
中捕获异常也是个坏主意。如果方法成功返回(未抛出),则框架认为数据库已成功创建。

在onCreate()和onUpgrade()中,您使用了错误的数据库引用。您应该使用这些方法接收的数据库引用作为其参数,在您的情况下是db,但您使用的mDb是错误的

在onCreate()和onUpgrade()中,您使用的数据库引用是错误的。您应该使用这些方法接收的数据库引用作为其参数,在您的情况下是db,但您使用的mDb是错误的

在onCreate()和onUpgrade()中,您使用的数据库引用是错误的。您应该使用这些方法接收的数据库引用作为其参数,在您的情况下是db,但您使用的mDb是错误的

在onCreate()和onUpgrade()中,您使用的数据库引用是错误的。您应该使用这些方法接收的数据库引用作为其参数,在您的情况下是db,但您使用的mDb是错误的调用时调用
getWritableDatabase
/
getReadableDatabase

onCreate
/
onUpgrade
调用时调用
getWritableDatabase
getReadableDatabase
onCreate
/
onUpgrade
getWritableDatabase
/
getReadableDatabase