Здравствуйте!
Я полагал, что метод onCreate() должен срабатывать при создании экземпляра объекта.
Я и сейчас так полагаю!
Но, видимо, где-то протупил и не вижу...
Ниже код и соответствующий ЛОГ. Из ЛОГА видно, что при выполнении
mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
Метод public void onCreate(SQLiteDatabase db) класса DBHelper не вызвался!?
Может кто-то из ГУРУ подскажет, где я не прав?
Вот код (практически полностью из урока):
package com.example.money01;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class MyMoneyDB {
private static final String LOG_TAG = "Money";
public static SQLiteDatabase MoneyDB;
private static final String DB_NAME = "myMoney";
private static final int DB_VERSION = 1;
private static final String ACC_CREATE =
"create table Acc (" +
" _ID integer primary key autoincrement, " +
" _TYPE integer, " +
" _CURR integer, " +
" _Name text, " +
" _SubName text, " +
" _SortOrder integer" +
");";
private final Context mCtx;
private DBHelper mDBHelper;
public MyMoneyDB(Context ctx) {
mCtx = ctx;
}
// открыть подключение
public void open() {
Log.d(LOG_TAG, "Будем создавать DBHelper.");
mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
Log.d(LOG_TAG, "Создали DBHelper.");
MoneyDB = mDBHelper.getWritableDatabase();
}
// закрыть подключение
public void close() {
if (mDBHelper!=null) mDBHelper.close();
}
// класс по созданию и управлению БД
private class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
// создаем
@Override
public void onCreate(SQLiteDatabase db) {
Log.d(LOG_TAG, "Будем создавать базу.");
db.execSQL(ACC_CREATE);
// Для примера наполняем всякой фигней
ContentValues cv = new ContentValues();
for (int i = 1; i < 5; i++) {
cv.put("_CURR", 0);
cv.put("_TYPE", i);
cv.put("_SubName", i);
cv.put("_SortOrder", 0);
cv.put("_Name", "Счет " + i);
db.insert("Acc", null, cv);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
}
А вот, соответствующий ЛОГ
08-30 19:21:46.001: D/Money(640): Будем создавать DBHelper.
08-30 19:21:46.011: D/Money(640): Создали DBHelper.