android-sqlite-數據存儲

Android 專門提供了一個SQliteOpenHelper幫助類,管理數據庫,藉助這個類可以對數據庫進行創建和升級。

1、數據庫的創建和升級

編寫藍牙配對列表寫入數據庫的Helper類繼承抽象類SQLiteOpenHelper,用於創建數據庫和表bt_pair_devices

   public class BondedDevicesHelper extends SQLiteOpenHelper{
        private Context mContext;
        private static final String DATABASE_NAME = "BtPairDevices.db";//數據庫名稱
        private static final int SCHEMA_VERSION = 1;//版本號,則是升級之後的,升級方法請看onUpgrade方法裏面的判斷
        public static final String CREATE_BT = "create table bt_pair_devices ("
                + "id integer primary key autoincrement,"
                + "address text,"
                + "name text,"
                + "pincode text"
                + "bonded_pos integer,"
                + "connect_pos integer)";

        public BondedDevicesHelper(Context context) {

           // 打開數據庫
            super(context, DATABASE_NAME, null, SCHEMA_VERSION);
            mContext = context;
            Log.d(TAG,"BtDatabaseHelper(Context context)");
        }

        @Override
        public void onCreate(SQLiteDatabase db) {

           //創建配對列表存儲表bt_pair_devices
            db.execSQL(CREATE_BT);
            Log.d(TAG,"db.execSQL(CREATE_BT) = " + CREATE_BT);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            //db.execSQL("ALTER TABLE person ADD phone VARCHAR(12)");//往表中增加一列
            Log.d(TAG,"onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)");
        }
    }

 

2、對配對列表信息進行插入,刪除和更新

創建類BondedDevicesDatabaseHelper,在該類中通過對象dbHelper獲得SQLiteDatabase的db對象對數據進行增刪改查操作

public class BondedDevicesDatabaseHelper{
    private static final String TAG = "BondedDevicesDatabaseHelper";
    private static final boolean DBG = true;
    private static final String BONDED_DEVICE_TABLE_NAME = "bt_pair_devices";
    private BondedDevicesHelper dbHelper;
    BondedDevicesDatabaseHelper(){
        dbHelper = new BondedDevicesHelper(AdapterApp.getAdapterAppContext());
    }

2.1 插入數據 insert

   boolean insert(String address ,String name ,String pincode){
        if(isExist(address)){
            SQLiteDatabase db = dbHelper.getWritableDatabase();
            ContentValues cv = new ContentValues();
            cv.put("name", name);
            cv.put("pincode", pincode);
            db.update(BONDED_DEVICE_TABLE_NAME ,cv ,"address = ?", new String[]{address});
            if(DBG){
                Log.d(TAG ,"update address = " + address + " name = " + name);
            }
        }else{
            int pos = queryCount();
            SQLiteDatabase db = dbHelper.getWritableDatabase();
            ContentValues cv = new ContentValues();
            cv.put("address", address);
            cv.put("name", name);
            cv.put("pincode", pincode);
            cv.put("bonded_pos" , pos);
            db.insert(BONDED_DEVICE_TABLE_NAME, null, cv);

            if(DBG){
                Log.d(TAG ,"insert address = " + address + " name = " + name + " bonded_pos " + pos);
            }
        }
        return true;
    }

2.2 更新數據update 設備名稱

   boolean update(String address ,String name){
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put("name", name);
        db.update(BONDED_DEVICE_TABLE_NAME ,cv ,"address = ?", new String[]{address});

        if(DBG){
            Log.d(TAG ,"upate address = " + address + " name = " + name);
        }
        return true;
    }

2.3 根據設備地址刪除設備-delete

  boolean delete(String address){
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        db.delete(BONDED_DEVICE_TABLE_NAME, "address = ?", new String[]{address});

        if(DBG){
            Log.d(TAG ,"delete address = " + address);
        }
        return true;
    }

2.4 查詢設備列表信息-query

  List<BondedDevice> quereAll(){
        List<BondedDevice> bondedDevices = new ArrayList<BondedDevice>();
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        Cursor cursor = db.query(BONDED_DEVICE_TABLE_NAME ,null ,null ,null ,null ,null ,null);

        int pos = 0;
        while(cursor != null && cursor.moveToNext()){
            pos++;
            String address = cursor.getString(cursor.getColumnIndex("address"));
            String name = cursor.getString(cursor.getColumnIndex("name"));
            BondedDevice device = new BondedDevice();
            device.setAddress(address);
            device.setName(name);
            bondedDevices.add(device);
            if(DBG){
                Log.d(TAG ,"quere address = " + address + " name = " + name + " pos " + pos);
            }
        }
        return bondedDevices;
    }

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章