標籤:
上次我們為eatwhat添加了了刪除功能和dialog對話方塊的介紹,今天我們來使用SQLite進行本機資料儲存。
首先,我們定義一個SQL輔助類ShopInfoOpenHelper繼承SQLiteOpenHelper。
public class ShopInfoOpenHelper extends SQLiteOpenHelper {public ShopInfoOpenHelper(Context context, String name,CursorFactory factory, int version,DatabaseErrorHandler errorHandler) {super(context, name, factory, version, errorHandler);// TODO Auto-generated constructor stub}@Overridepublic void onCreate(SQLiteDatabase arg0) {// TODO Auto-generated method stub}@Overridepublic void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {// TODO Auto-generated method stub}} 在構造方法ShopInfoOpenHelper中配置上下文環境、資料庫名稱、版本號碼遊標工廠預設設定null。
public ShopInfoOpenHelper(Context context) {super(context, "shop_info.db", null, 1);} 在OnCreate中建立表shopinfo:主鍵_id,欄位shopName。
public void onCreate(SQLiteDatabase db) {db.execSQL("create table shopinfo(_id integer primary key autoincrement,shopName char(20))");} MainActivity中聲明資料庫和輔助類。在init()方法中聲明createOrOpenDataBase()方法。
// 資料庫建立private SQLiteDatabase db;// openHelper輔助類private ShopInfoOpenHelper mOpenHelper;
該方法體內初始化輔助類openhelper,建立或者開啟資料庫:
private void createOrOpenDataBase() {mOpenHelper = new ShopInfoOpenHelper(MainActivity.this);//如果資料庫不存在 則建立可讀寫的資料庫 ,如果建立了 則直接開啟db = mOpenHelper.getWritableDatabase();}
聲明方法addLocalData(Shop shop):
private void addLocalData(Shop shop) {//儲存的機制,只能儲存基本類型的資料,像string、int之類。ContentValues values = new ContentValues();values.put("shopName",shop.getName());
//shopinfo中插入資料db.insert("shopinfo", null, values);}
在添加按鈕的邏輯中調用此方法:
// List shop添加店名 Shop shop = new Shop(addName); // 添加新執行個體化的shop對象 shopList.add(shop); // 重新整理listview shopAdapter.notifyDataSetChanged(); // 添加到本機資料 addLocalData(shop);
測試結果,真機測試需ROOT後通過rootexplorer等軟體進行尋找,路徑:data/data/包名/databases/資料庫名稱/表名
eatwhatApp開發實戰(五)