检查是否已创建sqlite数据库?

时间:2014-02-12 16:23:24

标签: android sqlite

Android Studio 0.4.4

您好,

我在main_activity类中有onCreate:

DBHelper dbHelper;
SQLiteDatabase db = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    dbHelper = new DBHelper(this);

    /* Database hasn't been created yet, if already created and opened ignore */
    if(db == null) {
        db = dbHelper.getWritableDatabase();
        Log.d(TAG, "onCreated() Create database for the first time");
    }
}

我有调用onCreate,onUpdate等的dbHelper类。但是,由于我的应用程序将使用纵向和横向,每次用户切换它时都会调用onCreate方法。我不想每次都要继续创建相同的数据库。我尝试检查null,但这不起作用。

我无法在清单文件(android:configChanges)中禁用调用onCreate,因为每次用户切换时,我都会在此方法中使用savedInstanceState。

非常感谢任何建议,

public class DBHelper extends SQLiteOpenHelper {

    static final String DB_NAME = "friends.db";
    static final int DB_VERSION = 1;
    static final String TABLE = "friends";
    static final String C_ID = BaseColumns._ID;
    static final String C_NAME = "name";
    static final String C_PHONE = "phone";
    static final String C_EMAIL = "email";

    private final String TAG = "DBHELPER";

    // Constructor
    public DBHelper(Context _context) {
        super(_context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table " + TABLE + "(" + C_ID + " int primary key, "
                + C_NAME + " text, "
                + C_PHONE + " text, "
                + C_EMAIL + " text)";

        db.execSQL(sql);
        Log.d(TAG, "onCreate sql: " + sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String sql = "drop table if exists " + TABLE;

        // Drop old database if it exists
        db.execSQL(sql);
        // Create a new database
        Log.d(TAG, "onUpgrade() sql: " + sql);
        onCreate(db);
    }
}

0 个答案:

没有答案