android学习笔记--sqlite数据库
来源:互联网 发布:陕西大数据集团胡刚 编辑:程序博客网 时间:2024/05/02 05:36
最近在通过集成环信实现即时通讯,需要匹配群中所有人(好友与非好友的头像与昵称),因为环信不负责维护这些数据,所以需要通过群id跟后台获取相应数据。获取的这份数据需要暂存在数据库中,所以重温了下sqlite的使用
SQLiteOpenHelper
SQLiteOpenHelper是一个抽象类,如果使用需要创建自己的帮助类去集成他。
/** * 常用的构造方法 * @param context 用来打开或创建数据库的上下文 * @param name 数据库文件名 * @param factory 用来创建cursor,如果null使用默认 * @param version 数据库版本**/public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version) { this(context, name, factory, version, null); }
/** * 创建或打开可写入权限的数据库,但当数据不可写入时,会出现异常**/public SQLiteDatabase getWritableDatabase() { synchronized (this) { return getDatabaseLocked(true); }}
/** * 创建或打开可读取的数据库**/public SQLiteDatabase getReadableDatabase() { synchronized (this) { return getDatabaseLocked(false); } }
/** * 执行创建逻辑**/public abstract void onCreate(SQLiteDatabase db);
/** * 执行更新逻辑**/public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);
使用上述方法创建数据库
public class MyDBHelper extends SQLiteOpenHelper{ public static final String CREATE_TABLE = ""; private Context mContext; public MyDBHelper(Context context,String name,CursorFactory factory,int version){ super(context,name,factory,version); this.mContext = context; } @Override public void onCreate(SQLiteDatabase db){ db.execSQL(CREATE_TABLE); } @Override public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ }}
MyDBHelper dbHelper = new MyDBHelper(context,"demo.db",null,1);SQLiteDatabase db = dbHelper.getWritableDatabase();
数据的CURD
/** * 插入数据 * @param table 表名 * @param nullColumnHack 可以为null * @param values 插入的数据**/public long insert(String table, String nullColumnHack, ContentValues values) { try { return insertWithOnConflict(table, nullColumnHack, values, CONFLICT_NONE); } catch (SQLException e) { Log.e(TAG, "Error inserting " + values, e); return -1; } }
//例如ContentValues values = new ContentValues();values.put("table row name1","");values.put("table row name2","");db.insert("table name",null,values);
/** * 插入数据 * @param table 表名 * @param values 更新的数据 * @param whereClause 匹配的where条件 * @param whereArgs where条件的参数 **/public int update(String table, ContentValues values, String whereClause, String[] whereArgs) { return updateWithOnConflict(table, values, whereClause, whereArgs, CONFLICT_NONE); }
//例如 将table name表中 所有row name = 1 的数据的table row //name 的值更新为 valueContentValues values = new ContentValues();values.put("table row name", "value");db.update("table name",values,"row name = ?",new String[]{"1"});
/** * 删除数据 * @param table 表名 * @param whereClause 条件 * @param whereArgs 匹配条件的值**/public int delete(String table, String whereClause, String[] whereArgs) { acquireReference(); try { SQLiteStatement statement = new SQLiteStatement(this, "DELETE FROM " + table + (!TextUtils.isEmpty(whereClause) ? " WHERE " + whereClause : ""), whereArgs); try { return statement.executeUpdateDelete(); } finally { statement.close(); } } finally { releaseReference(); } }
//例如 删除 table name表中 row name > 1的数据db.delete("table name","row name > ?",new String[]{"1"});
/** * 查询数据库 * @param table 查询的表名 * @param columns 返回的列集合,如果是null,则返回所有列 * @param selection 查询的约束条件,例:row name > ? * @param selectionArgs 为约束条件中的占位符提供值 * @param groupBy 指定需要排序的列 * @param having 对排序过的结果进一步约束 * @param orderBy 指定查询结构的排序方式**/public Cursor query(String table, String[] columns, String selection,String[] selectionArgs, String groupBy, String having,String orderBy) { return query(false, table, columns, selection, selectionArgs, groupBy, having, orderBy, null /* limit */); }
//查询table name中的所有数据Cursor cursor = db.query("table name",null,null,null,null,null,null);
事物
//开启事物public void beginTransaction() { beginTransaction(null /* transactionStatusCallback */, true); }
//标记当前事物成功public void setTransactionSuccessful() { acquireReference(); try { getThreadSession().setTransactionSuccessful(); } finally { releaseReference(); } }
//关闭事物 finally中必须执行关闭事物操作public void endTransaction() { acquireReference(); try { getThreadSession().endTransaction(null); } finally { releaseReference(); } }
0 0
- Android SQLite数据库学习笔记
- android学习笔记--sqlite数据库
- android学习笔记---SQLite数据库的使用
- 【Android学习笔记】SQLite数据库存储
- Android学习笔记 - 数据库篇 (SQLite)
- android学习笔记之SQLite数据库存储
- Android学习笔记 - 数据库篇 (SQLite)
- 学习笔记 android数据库之 Sqlite
- android学习笔记之SQLite数据库
- Android学习笔记---SQLite数据库 api
- android学习笔记(18)数据库sqlite初步
- android学习笔记(19)数据库sqlite进阶
- Android学习笔记----SQLite数据库基本用法
- Android学习笔记——数据库SQLite
- Android学习笔记-SQLite数据库实战
- Android学习笔记(42):SQLite数据库
- Android中SQLite数据库学习笔记
- Android SQLite数据库学习笔记(1)
- ViewPager跟FragmentTabHost结合起来使用
- 欢迎使用CSDN-markdown编辑器
- ubuntu14.04经典桌面怎么删除启动器的快捷方式
- linux内核里的GPIO操作函数
- 【Android基础学习】Listview的倒序显示问题
- android学习笔记--sqlite数据库
- lintcode:Candy
- STM32 读写内部Flash
- Linux安装yum环境
- 阿里架构之旅(二)——Dubbo解析
- Qt Charts 2.1完全安装指南
- 打开文件OPEN DATASET的各种语法
- 排序——堆排序(Heap Sortd)
- drawArrayFloat