android-sqlite-数据存储

Android 专门提供了一个SQliteOpenHelper帮助类,管理数据库,借助这个类可以对数据库进行创建和升级。

1、数据库操作实现类图:

2、数据库的创建和升级

编写蓝牙配对列表写入数据库的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)");
        }
    }

 

3、对配对列表信息进行插入,删除和更新

创建类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());
    }

3.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;
    }

3.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;
    }

3.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;
    }

3.4 查询设备列表信息-query

  List<BondedDevice> queryAll(){
        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;
    }

3.5 DB创建和插入数据流程

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值