我的android 第16天 - SQLite数据库

SQLite一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能,android内部集成了SQLite数据库,通过它很方面实现对数据的管理

案例:运用SQLite实现对个人信息的增删改查

实现流程

1、创建数据库

.新建类继承SqliteOpenHelper通过getWritableDatabase或者geReadableDatabase获得数据库对象SqliteDatabasedb

. public voidonCreate(SQLiteDatabasedb)

数据库第一次创建时调用,一般在这个方法创建表

.onUpgrade(SQLiteDatabasedb,intoldVersion,int

newVersion)

当数据库版本更新时调用,一般在这个方法中更改表字段、增加删除表

.DBHelper

publicclass DBHelperextends SQLiteOpenHelper {  /**   * 数据库文件名   * 文件位置:/data/data/包名/databases   */  private static final String NAME = "person.db";   private static final intVERSION = 2;   public DBHelper(Contextcontext) {  // version : 数据库版本号,必须大于等于1  super(context, NAME, null, VERSION);  }   /**   * 在第一次创建数据库的时候调用   *一般在这里创表   */  public void onCreate(SQLiteDatabase db) {  System.out.println("onCreate");   StringBuffer sb =new StringBuffer("createtable ").append(PersonMgr.TABLE).append("(")     .append(PersonMgr.ID).append(" integerprimary key autoincrement,")     .append(PersonMgr.NAME).append(" text,")     .append(PersonMgr.MONEY).append("integer); ");  db.execSQL(sb.toString());  }   /**   * 当数据库版本号变更的时候调用   *一般在这里更改表字段,或者添加删除表   */  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  System.out.println("onUpgrade");  db.execSQL("droptable  if exists "+ PersonMgr.TABLE);   onCreate(db);   }}

2、增删改查操作CRUD

.创建数据库操作类PersonMgr

.db.insert(TABLE, null, values);

valuesContentValues类型,以键值对形式存储字段数据

.db.deletetablewheretable:表where条件

.db.update(TABLE,values,where

.db.execSql(Stringsql)

.Db.close()数据库关闭

.PersonMgr

public int save(ContentValues values) {// 打开数据库SQLiteDatabase db = helper.getWritableDatabase();// 插入数据Long id = db.insert(TABLE, null, values);// 关闭数据库db.close(); return id.intValue();}/** * 删除联系人 * @param id 主键 * @return 返回值等于1代表删除成功 */public int delete(int id) {SQLiteDatabase db = helper.getWritableDatabase();int result = db.delete(TABLE, ID + " = ?", new String[]{String.valueOf(id)});db.close();return result;}/** * 更新联系人 * @param values 要更新的数据 * @return 返回值等于1代表更新成功  */public int update(ContentValues values) {String id = values.getAsString(ID);SQLiteDatabase db = helper.getWritableDatabase();int result = db.update(TABLE, values, ID + "=?", new String[]{id});db.close();return result;}public ArrayList<HashMap<String, Object>> find() {SQLiteDatabase db = helper.getReadableDatabase();Cursor cursor = db.query(TABLE, null, null, null, null, null, MONEY + " desc ");ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String,Object>>();while (cursor.moveToNext()) {HashMap<String, Object> map = new HashMap<String, Object>();map.put(ID, cursor.getInt(cursor.getColumnIndex(ID)));map.put(NAME, cursor.getString(cursor.getColumnIndex(NAME)));map.put(MONEY, cursor.getInt(cursor.getColumnIndex(MONEY)));data.add(map);}db.close();return data;}public Cursor findByCusor() {SQLiteDatabase db = helper.getReadableDatabase();return db.query(TABLE, null, null, null, null, null, MONEY + " desc ");}public void pay(int fromUser, int toUser, int money) {SQLiteDatabase db = helper.getWritableDatabase();try {// 开始事务db.beginTransaction();db.execSQL("update t_person set money=money-"+money+" where _id = "+fromUser);db.execSQL("update t_person set money=money+"+money+" where _id = "+toUser);// 标记为提交事务db.setTransactionSuccessful();} finally {// 结束事务(默认是回滚事务)db.endTransaction();}}

3、事务处理

.开启事务db.beginTransaction();

.标记为提交事务db.setTransactionSuccessful();

.结束事务db.endTransaction();

三、关注点

.SqliteOpenHelper类的onCreate()、onUpdate()方法

.ContentValues类与HashMap类似,以键值对的形式存放数据,在条件

查询中经常用户

.SimpleCursorAdapter适配器:使用条件数据库主键名必须为_id

. SQLite事务处理

下载视频代码

更多相关文章

  1. android 数据话持久化——SQLite
  2. Android数据持久化之SQLite数据库用法分析
  3. android SQLite数据库的基本操作
  4. Android五种数据存储方式
  5. 关于Android连接远程数据库(mysql、oracle)

随机推荐

  1. Android(安卓)XML 不常用属性
  2. Android开发工具——Android(安卓)studio
  3. 让Ubuntu和Android同时运行(Ubuntu on And
  4. 知识梳理之Android进程
  5. ArcGIS for Android地图控件的5大常见操
  6. Xamarin Mono Android实现“再按一次退出
  7. 一起学android之EditText的各种使用(15)
  8. Android(安卓)UI线程和非UI线程
  9. 解决 android如何设置全屏模式
  10. Kotlin Anko Layout+MVP(Glide,Retrofit,