`
_小菜鸟
  • 浏览: 34045 次
社区版块
存档分类
最新评论

我的android 第16天 - SQLite数据库

阅读更多

我的android 第16天 - SQLite数据库

 

 

 

   

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

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

实现流程

   1、创建数据库

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

   . public void onCreate(SQLiteDatabase db)

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

   onUpgrade(SQLiteDatabase dbint oldVersionint

       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);

       values 为 ContentValues 类型,以键值对形式存储字段数据

   db.deletetablewhere) table:表  where条件

       . db.update(TABLE, values,where

       db.execSql(String sql)

       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事务处理

 

 

 

 

 

 

下载视频代码

分享到:
评论

相关推荐

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 ...• SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和...

    Android项目设计与开发:SQLite 3.ppt

    嵌入式Android项目设计与开发 第六章 数据存储 ——SQLite 3 SQLite 内容: SQLite如何插入数据。 (1)SQL语句。insert into table…value() (2)使用SQLiteOpenHelper接口 实验 通过SQLiteOpenHelper接口insert ...

    Android高级编程--源代码

    由于现有的手机应用程序的开发是构建在各手机厂家的私有操作系统之上的,所以它限制了第三方应用程序的开发,而Android为我们提供了一个开放和通用的选择。因为没有了人为制造的障碍,所以Android开发人员可以自由地...

    基于Android的家庭理财系统的设计与实现.rar(毕业论文设计+程序源码) android studio导入可直接打开

    第3章 需求分析与数据库设计 16 3.1需求分析 16 3.1.1功能性需求分析 16 3.12非功能性需求分析 17 3.2系统数据库设计 17 3.2.1数据库概念结构设计 17 3.2.2数据库逻辑结构设计 18 第4章 详细设计与实现 18 4.1家庭...

    中文版Android程序员入门

    创建一个SQLite数据库 第十一章(2) 146 创建一个定制的Content Provider 第十一章(3) 148 创建Content Provider 第十一章(4) 150 创建FindAFriend活动 第十一章(5) 160 创建NameEditor活动 第十一章(6) 162 创建...

    Android程序员入门(中文版).doc

    创建一个SQLite数据库 第十一章(2) 146 创建一个定制的Content Provider 第十一章(3) 148 创建Content Provider 第十一章(4) 150 创建FindAFriend活动 第十一章(5) 160 创建NameEditor活动 第十一章(6) 162 创建...

    Android黑名单管理系统毕业论文

    2.7 SQLite数据库 11 2.7.1 SQLite的功能 11 2.7.2 SQLite简介 11 2.7.3 SQLite特性 11 第三章 系统模块设计 13 3.1 系统需求分析 13 3.2 可行性分析 14 3.3 系统概要设计 14 3.4 系统主要功能模块设计 16 第四章 ...

    android开发指南

    创建一个SQLite数据库 第十一章(2) 129 创建一个定制的Content Provider 第十一章(3) 130 创建Content Provider 第十一章(4) 132 创建FindAFriend活动 第十一章(5) 141 创建NameEditor活动 第十一章(6) 143 创建...

    Android帮助文档及一些资料打包放送

    [Android]发布Sqlite数据库 - 农民伯伯 - 博客园.mht369.93 KB [Android]手动触发OnClick事件 - 农民伯伯 - 博客园.mht357.93 KB [Android]文本框实现搜索和清空效果 - 农民伯伯 - 博客园.mht380.75 KB 新浪微博布局...

    Android应用开发揭秘pdf高清版

    第16章 Android NDK开发 16.1 AndroidNDK简介 16.2 安装和配置NDK开发环境 16.2.1 系统和软件需求 16.2.2 NDK开发环境搭建 16.2.3 编译第一个NDK程序 16.3 AndroidNDK开发 16.3.1 JNI接口设计 16.3.2 使用C\C++实现...

    Android开发案例驱动教程 配套代码

    第16章 Google Map和定位服务 405 16.1 MyMap服务系统案例 405 16.2 Android Google Map 406 16.2.1 申请Google Map Android API Key 407 16.2.2 编写Android Google Map骨架程序 409 16.2.3 控制地图 412 ...

    《Java和Android开发实战详解》第18章 Google地图与定位服务代码-by 南邮-陈杨

    第16章讲解了存储数据、文件和SQLite数据库;第17章讲解内容提供者、广播接收器与信息提醒的系统服务;第18章讲解了GPS定位服务与Google地图开发的知识。  《Java和Android开发实战详解》适合Android开发入门者、...

    8天快速掌握Android教程源码

    04_开发与运行(卸载)第一个ANDROID应用.avi 所在项目:Hello 06_电话拔号器.avi 所在项目:phone 08_短信发送器.avi 所在项目:sms 09_深入了解各种布局技术.avi 所在项目:sms & FrameLayout 10_对应用进行单元...

    android知识大总结【邯院】

    第八章 SQLITE数据库 42 第九章 ListView控件的使用 50 第十章 Activity互相调用 62 第十一章 意图Intent的使用 70 第十二章 Activity的生命周期 72 第十三章 互联网开发 77 第十四章 JSON数据的解析 90 JAVA基础...

    【安卓项目】——新闻资讯类项目

    Android学习笔记(十二)——数据存储(SQLite数据库) Android学习笔记(十三)——数据存储(LitePal操作数据库) Android学习笔记(十四)——内容提供器 Android学习笔记(十五)——侧滑容器(ViewPager) .......

Global site tag (gtag.js) - Google Analytics