Android中使用数据库保存数据

来源:互联网 发布:宁波大学网络注销 编辑:程序博客网 时间:2024/06/10 23:30

代码如下:


/** * Created by SongWei on 2017/3/14. * Only used in Debug build type, make sure which build type the client is. */public class PushReceivedCollector {    private static final String TAG = "PushReceivedCollector";    private static final String TABLE_PUSH_ITEM = "push_item";    private static final String DB_NAME = "push_received.db";    private static PushOpenHelper pushOpenHelper;    private static synchronized PushOpenHelper getHelper(Context c) {        if (pushOpenHelper == null) {            pushOpenHelper = new PushOpenHelper(c);        }        return pushOpenHelper;    }    private static class PushOpenHelper extends SQLiteOpenHelper {        private static final int DATABASE_VERSION = 2;        private PushOpenHelper(Context context) {            super(context, DB_NAME, null, DATABASE_VERSION);        }        @Override        public void onCreate(SQLiteDatabase db) {            createPushItemTable(db);            //TODO:Add More Table Here        }        @Override        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {            //TODO:Update Database Here            switch (oldVersion) {                case 1:                    addSavedColumnInPushItemTable(db);                    ZLog.d(TAG, "push_received.db updated from oldVersion: " + oldVersion + " to newVersion:" + newVersion);                    break;                default:                    break;            }        }    }    static void createPushItemTable(SQLiteDatabase db) {        db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_PUSH_ITEM + "("                + DataContract.PushItemsColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"                + DataContract.PushItemsColumns.TASK_ID + " TEXT,"                + DataContract.PushItemsColumns.PUSH_TYPE + " INTEGER,"                + DataContract.PushItemsColumns.TIMESTAMP + " INTEGER,"                + DataContract.PushItemsColumns.CONFIG + " TEXT,"                + DataContract.PushItemsColumns.STATUS + " INTEGER,"                + DataContract.PushItemsColumns.RETRIES + " INTEGER,"                + DataContract.PushItemsColumns.SAVED + " INTEGER" //1:true, 0:false                + ");");    }    private static void addSavedColumnInPushItemTable(SQLiteDatabase db) {        db.execSQL("ALTER TABLE " + TABLE_PUSH_ITEM + " ADD COLUMN " + DataContract.PushItemsColumns.SAVED + " INTEGER default 1");    }    //main entry    public static boolean insertPushItem(final Context c, final PushItem item, boolean saved) {        if (null == c || null == item) {            return false;        }        ContentValues cv = new ContentValues(7);        cv.put(DataContract.PushItemsColumns.TASK_ID, item.getTaskId() == null ? "" : item.getTaskId());        cv.put(DataContract.PushItemsColumns.PUSH_TYPE, item.getPushType().value);        cv.put(DataContract.PushItemsColumns.TIMESTAMP, item.getTimestamp());        cv.put(DataContract.PushItemsColumns.CONFIG, item.getConfig() == null ? "" : item.getConfig());        cv.put(DataContract.PushItemsColumns.STATUS, item.getStatus().value);        cv.put(DataContract.PushItemsColumns.RETRIES, item.getRetries());        cv.put(DataContract.PushItemsColumns.SAVED, saved ? "1" : "0");        Cursor cursor = null;        try {            SQLiteDatabase db = getHelper(c).getWritableDatabase();            long last_id = db.insert(TABLE_PUSH_ITEM, null, cv);            cursor = db.query(TABLE_PUSH_ITEM, null, null, null, null, null, null);            if (cursor != null && cursor.getCount() > 200) {                db.delete(TABLE_PUSH_ITEM, DataContract.PushItemsColumns._ID + " < ?", new String[]{String.valueOf(last_id - 100)});            }        } catch (Exception e) {            e.printStackTrace();            return false;        } finally {            IOUtils.closeQuietly(cursor);        }        return true;    }    public static List<DebugPushItem> queryAll(final Context c) {        ArrayList<DebugPushItem> debugPushItems = new ArrayList<>();        Cursor cursor = null;        try {            cursor = getHelper(c).getWritableDatabase().query(TABLE_PUSH_ITEM,                    null,                    null,                    null,                    null,                    null,                    DataContract.PushItemsColumns._ID + " DESC");            if (cursor != null) {                while (cursor.moveToNext()) {                    String taskId = cursor.getString(cursor.getColumnIndex(DataContract.PushItemsColumns.TASK_ID));                    int pushType = cursor.getInt(cursor.getColumnIndex(DataContract.PushItemsColumns.PUSH_TYPE));                    long timestamp = cursor.getLong(cursor.getColumnIndex(DataContract.PushItemsColumns.TIMESTAMP));                    String config = cursor.getString(cursor.getColumnIndex(DataContract.PushItemsColumns.CONFIG));                    int status = cursor.getInt(cursor.getColumnIndex(DataContract.PushItemsColumns.STATUS));                    int retries = cursor.getInt(cursor.getColumnIndex(DataContract.PushItemsColumns.RETRIES));                    boolean saved = cursor.getInt(cursor.getColumnIndex(DataContract.PushItemsColumns.SAVED)) == 1;                    DebugPushItem item = new DebugPushItem(taskId, pushType, timestamp, config, status, retries, saved);                    debugPushItems.add(item);                }            }        } catch (Exception e) {            e.printStackTrace();        } finally {            IOUtils.closeQuietly(cursor);        }        return debugPushItems;    }    private static PushStatus getStatusByValue(int value) {        switch (value) {            case 0:                return PushStatus.INIT;            case 1:                return PushStatus.ON_GOING;            case 2:                return PushStatus.DONE;            default:                return PushStatus.INIT;        }    }    public static class DebugPushItem {        public PushItem pushItem;        public boolean saved;        DebugPushItem(String taskId, int pushType, long timestamp, String config, int status, int retries, boolean saved) {            this.pushItem = new PushItem();            this.pushItem.setTaskId(taskId);            this.pushItem.setPushType(PushType.valueOf(pushType));            this.pushItem.setTimestamp(timestamp);            this.pushItem.setConfig(config);            this.pushItem.setStatus(getStatusByValue(status));            this.pushItem.setRetries(retries);            this.saved = saved;        }    }}


原创粉丝点击