Android中資料庫升級,Android資料庫升級
public class MySQLiteHelper extends SQLiteOpenHelper { public static final String <span style="font-family: Arial, Helvetica, sans-serif;">SQL_CREATE</span><span style="font-family: Arial, Helvetica, sans-serif;">= "create table news (" </span> + "_id integer primary key autoincrement, " + "nametext, " + "agetext, )"; public MySQLiteHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(SQL_CREATE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
當我們如上建立了個SQLiteHelper,我們知道會在本地的目錄database中產生了個.db資料庫檔案! 可是我們遇到版本迭代往往要做更多的事情 這時候的會再建立個新的資料庫
這時候我們編譯完成之後發現沒有在database相對應的目錄下產生一個相對應的表。當然我們在調試代碼的時候可以清楚應用資料這樣重新啟動並執行時候會把onCreate方法再次執行一次那當然就會把未產生成功的表產生出來,可以在使用者迭代更新應用的時候總不能每次都清楚資料是吧! 所以:
<pre name="code" class="java">@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { onCreate(db); }
主要思路就是更新version,就是說你使用者現有裝的app上version是1的時候,在迭代版本更新的時候要更新version為>1的值 這樣我們在new MySQLiteHelper() 的時候就會執行onUpgrade()方法,然後在在該方法中寫入相對應的操作就會在database下生產相對應的表而不需要使用者去清除應用的資料。
當然這種方法有一個很嚴重的弊端就是 可能我們在發布版本的時候忘記修改該version導致無法操作資料引起一系列不可收拾的bug。 所以推薦使用LitePal開源庫進行對資料庫操作!詳情可見 <a target=_blank href="http://http://blog.csdn.net/guolin_blog/article/details/39151617">點擊開啟連結</a>