是否可以升级使用openorCreatedatabase sqlite创建的数据库?

时间:2014-07-23 20:09:45

标签: java android sqlite oncreate

知道如何更新使用openorcreatedatabase创建的sqlite数据库。问题是已经在市场上发布了应用程序。并且为该应用程序的新版本添加了数据库字段。

我试过这种方式

package com.example.database1;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
import android.widget.Toast;

public class ManagerDB extends SQLiteOpenHelper {

private static final String dropTablaUser = "drop table if exists user;";
private static final String createTablaUser = "create table if not exists user(userid integer primary key);";
    public ManagerDB(Context contexto, String namedb, CursorFactory factory,
            int version) {
        super(contexto, namedb, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        try {

            db.execSQL(createTablaUser);

        } catch (Exception e) {
            Log.i(TAG, "Error to open or create the database" + e);
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int versionafter,
            int newversion) {
        try {
             db.execSQL(dropTablaUser);            
             db.execSQL(createTablaUser);


        } catch (Exception e) {
            Log.i(TAG, "Error to open or create the database" + e);
        }

    }

}

但是那些拥有旧版本的人不会更新数据库,因为它不是以这种方式创建的,而是使用openorcreatedatabase

1 个答案:

答案 0 :(得分:1)

对于此升级,您必须手动执行版本检查和更新机制。

(如果旧数据库和SQLiteOpenHelper数据库具有不同的名称,这是最简单的。)

onCreate函数中,检查是否存在某个旧数据库文件。 如果确实存在,请将其打开(或更好,attach),然后将数据复制到新数据库中。