簡體   English   中英

DatabaseHelper類,未調用onCreate()

[英]DatabaseHelper class, onCreate() not called

我正在主要活動的onCreate()中創建DBHelper類的實例。

 databaseHelper = new DatabaseHelper(getBaseContext());

我不知道何時調用onCreate() 我試過給Toast 就像getWritableDatabase();一樣快 稱為施力關閉。 這是我的代碼:

public class DatabaseHelper extends SQLiteOpenHelper
{
    SQLiteDatabase db;
    // Database Name
    private static final String DATABASE_NAME = "manasi.db";
    // database table name
    private static final String TABLE_DATA = "data";
    // Database table fields
    private static final String KEY_IMEI = "imei";
    private static final String KEY_LAT = "lat";
    private static final String KEY_LONG = "long";
    private static final String KEY_DATETIME = "datetime";
    private static final String KEY_ALTITUDE = "altitude";
    private static final String KEY_SPEED = "speed";
    private static final String KEY_BATTERY = "battery";
    Context context;
    /**
     * @param context Application Context
     */
    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
        // db = this.getWritableDatabase();
        Toast.makeText(context, "db helper", Toast.LENGTH_LONG).show();
    }
    /* Called when the database is created for the first time.
     * @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase)
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE DB_TABLE(_id INTEGER PRIMARY KEY AUTOINCREMENT, content TEXT);");
        Toast.makeText(context, "db helper onCreate", Toast.LENGTH_LONG).show();
        String CREATE_DATA_TABLE = "CREATE TABLE " + TABLE_DATA + "("
                + KEY_IMEI + " TEXT ," + KEY_LAT + " DOUBLE," + KEY_LONG
                + "DOUBLE," + KEY_DATETIME + "DATETIME," + KEY_ALTITUDE + "DOUBLE,"
                + KEY_SPEED + "TEXT," + KEY_BATTERY + "TEXT" + ")";
        db.execSQL(CREATE_DATA_TABLE);
        Context context = null;

    }

    /* Called when the database needs to be upgraded.
    * @see    android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite.SQLiteDatabase, int, int)
    */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w("DatabaseHelper", "Upgrading database, which will destroy all old data");
        onCreate(db);
    }

    public void insertRecordToDB(Data data) {
        db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(KEY_IMEI, data.getImei());
        values.put(KEY_LAT, data.getLatitude());
        values.put(KEY_LONG, data.getLongitude());
        values.put(KEY_DATETIME, data.getDateTime());
        values.put(KEY_ALTITUDE, data.getAltitude());
        values.put(KEY_SPEED, data.getSpeed());
        values.put(KEY_BATTERY, data.getBattery());
        // Inserting Row
        db.insert(TABLE_DATA, null, values);
        db.close(); // Closing database connection*/
    }


}

在您的活動中這樣做

databaseHelper = new DatabaseHelper(this);
SQLiteDatabase sb = databaseHelper.getWritableDatabase();//this line responsible to call onCreate()

並閱讀此http://mobileapplications-by-himanshu.blogspot.in/

onCreate()調用一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM