編輯:關於Android編程
上一篇文章中,簡單介紹了一下android數據庫的一些基本概念,那麼從本節開始,就實戰一下Android數據庫的創建和升級。
上文中,也介紹了,SQLiteOpenHelper是一個抽象類,是我們用來創建和升級數據庫的最佳實踐。下面直接以代碼方式,演示一下數據庫的創建操作。
package com.happy.db.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; /** * @Description: 數據庫輔助類 主要完成數據庫的創建以及升級 */ public class MySQLiteOpenHelper extends SQLiteOpenHelper { private static final String DB_NAME = "test.db"; private static final String TABLE_NAME = "user"; private static final int DB_VERSION = 1; private static final String ID = "id"; private static final String NAME = "name"; private static final String GENDER = "gender"; private static final String TELEPHONE = "telphone"; // 創建數據庫的sql語句 private static final String CREATE_DB_SQL = "CREATE TABLE " + TABLE_NAME + "(" + ID + " integer primary key autoincrement , " + NAME + " text not null ," + GENDER + " text ," + TELEPHONE + " integer " + ")"; /** * 構造方法 * * @param context * 上下文 * @param name * 數據庫名 * @param factory * 游標工廠 * @param version * 數據庫版本號 */ public MySQLiteOpenHelper(Context context, String name, CursorFactory factory, int version) { super(context, DB_NAME, null, version); } /** * 當磁盤上不存在數據庫文件時,輔助類需要創建一個新數據時使用 */ @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_DB_SQL); } /** * 已經存在數據庫,但是數據庫版本不一樣時調用(升級) */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } }如果我們直接運行我們的程序,會發現並沒有把我們的數據庫給創建出來。如果創建和訪問數據庫需要調用getReadableDatabase或getWritableDatabase來獲取數據庫只讀或可寫的實例。當我們調用執行完helper.getReadableDatabase();或helper.getWritableDatabase();後,數據庫實例就被創建出來了。如圖:
vcr9vt294bm5yOfPwqO6PC9wPgo8cD48aW1nIHNyYz0="/uploadfile/Collfiles/20141124/2014112408501543.png" alt="\">
這樣我們便完成了數據庫實例的創建。
下面,同樣的方法介紹一下我們數據庫版本的升級。
首先,定義我們升級數據庫的sql語句,在這為user增加一列,並在upgrade中執行該sql。
//升級數據庫語句 private static final String UPGRADE_SQL = "ALTER TABLE " + TABLE_NAME + " ADD COLUMN " + " money float "; /** * 已經存在數據庫,但是數據庫版本不一樣時調用(升級) */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(UPGRADE_SQL); }然後在我們的程序中執行如下代碼:
case R.id.bt_upgrade_db://升級數據庫 helper = new MySQLiteOpenHelper(getApplicationContext(), "test.db", null, 2); helper.getReadableDatabase(); break;這樣,運行之後,便會將我們的數據庫進行升級,再次將我們的數據庫打開,會發現數據結構如下:
如此,便完成了我們數據庫的升級邏輯。當然,在實際開發中,upgrade中不會簡單執行一條的,需要對當前數據版進行判斷,對於不同的數據庫版本執行不同的sql語句。
當然,如果我們希望直接管理數據庫的創建 打開和版本控制操作,而不是使用sqliteopenhelper,那麼可以使用應用程序Context對象的openOrCreateDataBase方法來創建數據庫本身。
Context context = getApplicationContext(); SQLiteDatabase db = context.openOrCreateDatabase("test1.db", Context.MODE_PRIVATE, null); db.execSQL("create table student ( id integer primary key autoincrement , name text,sex text,mobile integer) ");
這樣同樣可以創建出來test1.db數據庫,創建完成後記得使用數據庫的exeSQL來根據執行創建和刪除表的操作。
本文就簡單介紹到這吧,都是挺淺的一些東西,也是我們Android中基本用到的創建和升級數據庫的可選方案了。
0x00 序隨著移動安全越來越火,各種調試工具也都層出不窮,但因為環境和需求的不同,並沒有工具是萬能的。另外工具是死的,人是活的,如果能搞懂工具的原理再結合上自身的經驗,
可能很多做JAVAWEB 或是C#的工程師。在項目尤其是OA項目中,會用到POI。。。也就是excel的導入導出。。。剛好今天在研究安卓APP中,把數據填入到EditTe
前言Ant是歷史比較悠久的一個自動化構建工具,Android開發者可以通過它來實現自動化構建,也可以實現多渠道打包,關於apk打包的方式一般有Ant、Python、Gra
一、 問題描述 用戶首次後再次進入小程序時,我們通常需要通過獲取用戶openid或unionid用作唯一標示與後台進行數據交流,初始化用戶信息。當我們通過第三方服務器跟微