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; } }}
阅读全文
1 0
- Android中使用数据库保存数据
- Android中使用SharedPreferences保存数据
- Android---把数据保存到数据库中(一)
- Android---把数据保存到数据库中(二)
- Android 保存数据到数据库
- 在android中使用java 的preferences来保存数据
- 在Android中使用SharedPreferences保存简单的数据
- android中使用SharedPreferences保存数据丢失的问题
- Android使用SQLite保存数据
- extjs3中RowEditor保存数据到数据库
- 查询数据库数据使用HashMap保存
- 使用SQLite数据库保存和处理数据
- android 将map保存到sqlite数据库中,从表数据中取回map
- Android官方文档---把数据保存到数据库中(一)
- Android官方文档---把数据保存到数据库中(二)
- Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)
- Android 使用LitePal将list(String,对象,集合)数据保存到本地数据库
- 关于Nhibernate在wpf中的使用:Session.Save()无法保存数据到数据库中
- 多线程与死锁
- C++学习笔记系列一
- Java线程八锁
- Hibernate的count(*)函数通过调用uniqueResult方法的返回值类型
- noip2013day1
- Android中使用数据库保存数据
- Redis--persistence(持久化)
- hdu6154
- iOS 数据结构~链表简介
- 笔记:堆的增删改查(数组实现)
- SpringMVC 注解开发
- Linux部署web程序
- nodgd 好路线 noip 2015 模拟赛 T3
- 关于局域网内多人通过IP连接同一个sql数据库的问题