我的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(安卓)运行开发环境在Eclipse中部署笔记
  6. 创建你的第一个AndroidApp
  7. Android应用程序与SurfaceFlinger服务之间的共享UI元数据(SharedC
  8. android切换屏幕时的生命周期
  9. android中的异步,AsyncTask,HandlerThread

随机推荐

  1. android > WiFi > 新建连接
  2. Android使用View类动画
  3. Android(安卓)app开机启动
  4. android监听ScrollView滑动停止
  5. Android(安卓)Studio/Gradle/重复依赖
  6. Android(安卓)studio 点击按钮 改变viewt
  7. android获取控件的几种方法
  8. Android(安卓)PopupWindow做的分享界面
  9. android 一些路径的标准写法
  10. android之ArrayAdaper之Spinner