知道如何更新使用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
答案 0 :(得分:1)
对于此升级,您必须手动执行版本检查和更新机制。
(如果旧数据库和SQLiteOpenHelper数据库具有不同的名称,这是最简单的。)
在onCreate
函数中,检查是否存在某个旧数据库文件。
如果确实存在,请将其打开(或更好,attach),然后将数据复制到新数据库中。