1、Android移动开发基础案例教程第5章 SQLite数据库 数据库的使用 数据展示控件 SQLite数据库简介 数据库的创建 作业点评 请简述Android系统中五种数据存储方式各自的特点。 请简述SharedPreferences如何存储数据。 SQLite数据库的使用 ListView控件的作用预习检查5.4 数据展示控件5.1 SQLite数据库简介5.2 数据库的创建5.3 数据库的使用主讲内容SQLite特点 SQLite是一个轻量级数据库,占用资源非常低,在内存中只需要占用几百KB的存储空间。 SQLite是遵守ACID的关系型数据库管理系统,ACID是指数据库事务正确执行的四个
2、基本要素。原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability) SQLite保存数据时,支持NULL(零)、INTEGER(整数)、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)五种数据类型。SQLite数据库简介5.4 数据展示控件5.1 SQLite数据库简介5.2 数据库的创建5.3 数据库的使用主讲内容 public class MyHelper extends SQLiteOpenHelper public MyHelper(Context context) super(context, itca
3、st.db, null, 2); public void onCreate(SQLiteDatabase db) db.execSQL(CREATE TABLE information(_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20), price INTEGER); / 当数据库的版本号增加时调用 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 创建数据库数据库的创建5.4 数据展示控件5.1 SQLite数据库简介5.2 数据库的创
4、建5.3 数据库的使用主讲内容添加数据 public void insert(String name,String price) SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(name, name); values.put(price, price); long id = db.insert(information,null,values); db.close(); 5.3.1 SQLite的基本操作修改数据 public int
5、update(String name, String price) SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(price, price); int number = db.update(information, values, name =?, new Stringname); db.close(); return number; 5.3.1 SQLite的基本操作删除数据 public int delete(long id)
6、SQLiteDatabase db = helper.getWritableDatabase(); int number = db.delete(information, _id=?, new Stringid+); db.close(); return number; 5.3.1 SQLite的基本操作查询数据 public boolean find(long id) SQLiteDatabase db = helper.getReadableDatabase(); Cursor cursor = db.query(information, null, _id=?, new Stringid
7、+, null, null, null); boolean result = cursor.moveToNext(); cursor.close(); db.close(); return result; 5.3.1 SQLite的基本操作 PersonSQLiteOpenHelper helper = new PersonSQLiteOpenHelper(getContext(); SQLiteDatabase db = helper.getWritableDatabase(); db.beginTransaction(); try db.execSQL(update person set
8、account=account-1000 where name =?,new Object zhangsan ); db.execSQL(update person set account=account+1000 where name =?,new Object wangwu ); db.setTransactionSuccessful(); catch (Exception e) Log.i(事务处理失败, e.toString(); finally db.endTransaction(); db.close(); 5.3.2 SQLite中的事务23功能描述:技术要点:案例案例代码(详见
9、教材代码(详见教材P15P21)实现步骤: 1 用户交互界面的设计与实现 界面逻辑代码的设计与实现创建通讯录实现添加,查询,修改,删除联系人信息。SQLite数据库的使用。5.3.3 实战演练绿豆通讯录5.4 数据展示控件5.1 SQLite数据库简介5.2 数据库的创建5.3 数据库的使用主讲内容ListView控件 5.4.1 ListView控件Adapter BaseAdapter即基本的适配器,使用BaseAdapter时需要实现四个方法。5.4.2 常用数据适配器(Adapter)SimpleAdapter SimpleAdapter继承自BaseAdapter,实现了BaseAd
10、apter的四个抽象方法并进行了封装。 public SimpleAdapter(Context context, List? extends Map data , int resource, String from, int to);5.4.2 常用数据适配器(Adapter)ArrayAdapter ArrayAdapter也是BaseAdapter的子类,通常用于适配TextView控件,ArrayAdapter有多个构造方法。public ArrayAdapter(Context context,int resource);public ArrayAdapter(Context con
11、text,int resource, int textViewResourceId);public ArrayAdapter(Context context,int resource,T objects);public ArrayAdapter(Context context,int resource,int textViewResourceId,T objects);public ArrayAdapter(Context context,int resource,List objects);public ArrayAdapter(Context context,int resource,in
12、t textViewResourceId, List objects)5.4.2 常用数据适配器(Adapter)23功能描述:技术要点:案例代码(详见教材案例代码(详见教材P21P26)实现步骤: 1 ListView展示界面的设计与实现 Item布局的设计与实现 展示界面逻辑代码的设计与实现通过ListView控件将应用Logo以及应用名称进行展示。ListView控件的使用,BaseAdapter的使用。5.4.3 实战演练Android应用市场 为了防止数据量过大造成内存溢出,在使用ListView时通常会进行优化,其中一种是复用convertView。5.4.4 ListView优化
13、 在加载Item布局时,会使用findViewById()方法找到Item布局中的各个控件,在每一次加载新的Item数据时都会进行控件寻找,这样也会产生耗时操作。 为了进一步的优化ListView减少耗时操作,可以将要加载的子View放在ViewHolder类中,当第一次创建convertView时将这些控件找出,在第二次重用convertView时就可直接通过convertView中的getTag()方法获得这些控件。使用ViewHolder类5.4.4 ListView优化 本章讲解了SQLite数据库和ListView控件的相关知识,首先简单地介绍了SQLite数据库,然后讲解了如何使用SQLite数据库以及ListView。SQLite数据库和ListView这两个知识非常重要,在实际开发中可以实现很多功能,例如电子商城中的购物车、网易新闻客户端等。因此,要求初学者必须掌握本章知识。5.5 本章小结 本章作业 请简要说明SQLite数据库的创建过程。 请简要说明BaseAdapter适配器包含几个抽象方法,以及这些方法的作用。 预习作业 什么是广播接收者以及其作用 广播的类型