2013-01-09 56 views
0

如果我对数据库进行了任何更改,例如在我的android应用程序中添加新列。 和如果我已经在我的手机上安装了它。 当我在移动设备上重新安装/更新该应用程序时,它不会更新数据库更改。如何将数据库更改更新为已安装的应用程序

我的数据库的代码是:

package com.screenmagic.smsmagicmobileapp; 

import java.text.SimpleDateFormat; 
import java.util.Date; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 


public class DatabaseHandler extends SQLiteOpenHelper { 


private static final int DATABASE_VERSION = 1; 
private static final String DATABASE_NAME = "Test"; 


public DatabaseHandler(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 
@Override 
public void onCreate(SQLiteDatabase db) { 
    Log.d(TAG, "onCreate OF DatabaseHandler"); 

    db.execSQL("DROP TABLE IF EXISTS history"); 
    String CREATE_SMS_HISTORY_TABLE = "CREATE TABLE history("+ 
    "id INTEGER PRIMARY KEY AUTOINCREMENT, mobileNumber TEXT, smsText TEXT)"; 
    Log.d("Insert: ", "Table create query:: "+ CREATE_SMS_HISTORY_TABLE); 
    db.execSQL(CREATE_SMS_HISTORY_TABLE); 
    Log.d("Insert: ", "Table created .."); 

} 

// Upgrading database 
@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS sms_history"); 
    onCreate(db); 
} 


} 

回答

1

只需使用onUpgrade(作为替代)方法,你可以把你的数据库升级出现。这样,当已经安装应用程序时,现有的数据都不会被吹走。

并确保你不删除该表为你正在做的:

db.execSQL("DROP TABLE IF EXISTS sms_history"); 

的方法here以及如何实现它here

视频见参考文献
相关问题