• 1. SQLite基本操作 SQLite事务操作 ListView控件的使用 常见的数据适配器第五章 SQLite数据库
  • 2. ✎ 学习目标3 SQLite数据库重点了解掌握2 SQLite的事务操作 sqlite3.exe工具的使用SQLite的基本操作 ListView控件的使用 常见的数据适配器1
  • 3.  目录让IT教学更简单,让IT学习更有效SQLite数据库简介5.1SQLite数据库的使用 5.2☞点击查看本小节知识架构ListView控件5.3☞点击查看本小节知识架构本章小节5.4
  • 4.  知识架构5.2 SQLite数据库的使用返回目录5.2.1SQLite操作API5.2.3SQLite事务操作数据库的常用操作5.2.2sqlite3工具5.2.4
  • 5.  知识架构5.3 ListView控件返回目录5.3.1ListView控件的使用5.3.3案例——Android应用市场5.3.2常用的数据适配器(Adapter)5.3.4案例——商品展示
  • 6. 让IT教学更简单,让IT学习更有效5.1 SQLite数据库简介什么是SQLite?
  • 7. 5.1 SQLite数据库简介 是一个轻量级数据库,第一个版本诞生于2000年5月。它最初是 为嵌入式设计的,占用资源非常低,在内存中只需要占用几百KB的存储 空间。 SQLite是遵守ACID关联式的数据库管理系统。ACID是指数据库事务正确执行的基本要素,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 SQLite没有服务器进程,它通过文件保存数据,该文件是跨平台的,可以放在其他平台中使用。并且支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)五种数据类型。
  • 8. 5.1 SQLite数据库简介 SQLite由以下几个组件组成:SQL编译器、内核、后端以及附件。 SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展SQLite的内核变得更加方便。 虽然SQLite基本上符合SQL-92标准,但是SQLite和其他数据库最大的不同就是对数据类型的支持,此外SQLite也不支持一些标准的SQL功能,特别是外键约束(FOREIGNKEY constrains),嵌套transcaction和RIGHTOUTERJOIN和FULLOUTERJOIN,还有一些ALTERTABLE功能。 除了上述功能外,SQLite是一个完整的SQL系统,拥有完整的触发器,交易等等
  • 9. 5.2 SQLite数据库的使用5.2.1 SQLite操作APIAndroid SDK提供了一系列对数据库进行操作的类和接口。常用的数据库操作类有:
  • 10. 在Android中,SQLite的使用涉及两个重要的类,SQLiteDatabase和SQLiteOpenHelper: 1、SQLiteOpenHelper 具体方法: onCreate(SQLiteDatabase db) 一个SQLiteDatabase对象作为参数,当数据库第一次被建立的时候被执行,例如创建表,初始化数据等。 onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 需要三个参数,一个SQLiteDatabase对象,一个旧的数据库版本号(oldVersion)和一个新的数据库版本号(newVersion),当数据库需要被更新的时候执行,例如删除久表,创建新表,这样就可以把一个数据库从旧的模型转变到新的模型。 getReadableDatabase() 得到可读的数据库,返回SQLiteDatabase对象,然后通过对象进行数据库读取操作。 getWritableDatabase() 得到可写的数据库,返回SQLiteDatabase对象,然后通过对象进行数据库写入或者读取操作。 onOpen(SQLiteDatabase db) 当打开数据库时的回调函数。 close() 关闭数据库,需要强调的是,在每次打开数据库之后停止使用时调用,否则会造成数据泄露。 5.2 SQLite数据库的使用
  • 11. 5.2 SQLite数据库的使用5.2.2 数据库的常用操作Android SDK提供的一系列操作SQLite数据库的API。SQLiteDatabase 就是其中的一个,它提供了一些列用于操作数据库的方法。
  • 12. 2、SQLiteDatabase具体方法: public long insert (String table, String nullColumnHack, ContentValues values) 用于往表中插入一条记录。table指定要插入数据的表的名称,values为一个ContentValues对象,类似一个map通过键值对的形式存储值,是要插入的记录的所有值,其中的键必须与表中的字段名相同public int delete (String table, String whereClause, String[] whereArgs) 用于删除表中的一条记录。table指定要删除数据的表的名称,whereClause指定要根据哪个列字段参数来进行删除,whereArgs是删除的具体依据参数。 public int update (String table, ContentValues values, String whereClause, String[] whereArgs) 用于修改数据表中的一条数据。table指定要删除数据的表的名称,whereClause指定要根据哪个列字段参数来进行删除,whereArgs是删除的具体依据参数。使用方法与delete 方法相同,values则只用来保存需要修改的值。 public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) 用于查询数据表中的信息,获得指向对应要求数据的游标。table指定要删除数据的表的名称;columns指定需要查询的列,selection与selectionArgs参数使用与之前方法中whereClause与whereArgs相同;groupBy与having是与合计函数(Aggregate Functions),如SUM()一起使用的,一般设为null;orderBy指定查询数据顺序,可以以其中一个字段的升降序顺便查询,如以“ID”字段的降序排列,则orderBy为"ID DESC ",其中DESC代表降序的含义,而ASC代表升序;limit则指定限制查询数据的个数。 5.2 SQLite数据库的使用ContentValues类和Hashtable比较类似,它也是负责存储一些名值对, 但是它存储的名值对当中的名是一个String类型,而值都是基本类型。
  • 13. 5.2 SQLite数据库的使用方法名称方法描述getCount()获得总的数据项数isFirst()判断是否第一条记录isLast()判断是否最后一条记录moveToFirst()移动到第一条记录moveToLast()移动到最后一条记录move(int offset)移动到指定记录moveToNext()移动到下一条记录moveToPrevious()移动到上一条记录getColumnIndexOrThrow(String columnName)根据列名称获得列索引getInt(int columnIndex)获得指定列索引的int类型值getString(int columnIndex)获得指定列索引的String类型值Cursor是一个游标接口,提供了遍历查询结果的方法,如移动指针方法move(), 获得列值方法getString()等.Cursor游标常用方法  
  • 14. 5.2.3 SQLite事务操作 5.2 SQLite数据库的使用现实生活中,经常会进行转账操作,在转账的过程中,为了确保转账金额正确,会使用事务进行操作。 事务是针对数据库的一组操作,它可以由一条或多条SQL语句组成,同一个事务的操作具备同步的特点,如果有一条语句无法执行,那么所有语句都不会执行。也就是说,事务中的语句要么都执行,要么都不执行。 转入转出银行转账操作都执行,或都不执行
  • 15. 5.2.3 SQLite事务操作 5.2 SQLite数据库的使用Android事务的用法 1.db.beginTransaction(); 循环之前开启事务 2.db.setTransactionSuccessful(); 循环结束后调用 3.db.endTransaction();最后释放事务
  • 16. 5.2.4 sqlite3工具 5.2 SQLite数据库的使用在Android开发中,使用真机测试时无法进入data目录(只有获得Root权限的手机可以进入data目录)因此也无法直接操作应用程序下的数据库。为了解决该问题,SQLite数据库为开发者提供了sqlite3.exe工具。 sqlite3.exe是一个简单的SQLite数据库管理工具,位于Android ADT Eclipse中的sdk/tools目录下。
  • 17. 在使用该工具时,首先需要打开DOS命令行,依次输入如下命令: adb shell (挂载到linux的空间) cd data/data (进入data/data目录) cd cn.itcast.db (应用程序包名) ls (Linxus命令列出当前文件夹下的文件) cd databases (进入databases文件夹) ls –l (列出当前文件夹所有文件的详细格式) sqlite3 person.db (使用sqlite3操作应用程序下的数据库) select * from person;(利用sql语句查询person表中的信息) 5.2.4 sqlite3工具 5.2 SQLite数据库的使用
  • 18. 5.3 ListView控件5.3.1 ListView控件的使用在Android开发中,ListView是一个比较常用的控件。它以列表的形式展示具体数据内容,并且能够根据数据的长度自适应屏幕显示。
  • 19. 5.3 ListView控件5.3.2 常用数据适配器(Adapter)在使用ListView时需要对其进行数据适配。为了实现这个功能,Android系统提供一系列的适配器(Adapter)对ListView进行数据适配。 适配器就像显示器,把复杂的数据按人们易于接受的方式来展示。
  • 20. 5.3 ListView控件5.3.2 常用数据适配器(Adapter)在使用ListView时需要对其进行数据适配。为了实现这个功能,Android系统提供一系列的适配器(Adapter)对ListView进行数据适配。 适配器就像显示器,把复杂的数据按人们易于接受的方式来展示。
  • 21. 5.3.2 常用数据适配器(Adapter) Adapter公共方法: 1.abstract int getCount():得到Item的总数。 2.abstract Object getItem(int position):获得相关的数据项中的指定位置的数据集。 3.abstract long getItemId(int position):获得和表里特定位置的相关联的行id。 4.abstract View getView(int position, View convertView, ViewGroup parent):得到相应position对应的Item视图。
  • 22. 5.3.2 常用数据适配器(Adapter) BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性; ArrayAdapter支持泛型操作,最为简单,只能展示一行字。 SimpleAdapter有最好的扩充性,可以自定义出各种效果。
  • 23. 5.3.2 常用数据适配器(Adapter) SimpleAdapter(Context context, List> data, int resource, String[] from, int[] to)  第一个参数 表示访问整个android应用程序接口,基本上所有的组件都需要  第二个参数表示生成一个Map(String ,Object)列表选项  第三个参数表示界面布局的id  表示该文件作为列表项的组件  第四个参数表示该Map对象的哪些key对应value来生成列表项  第五个参数表示来填充的组件 Map对象key对应的资源一依次填充组件 顺序有对应关系
  • 24. 5.3.2 常用数据适配器(Adapter) public  ArrayAdapter  (Context context, int resource, int textViewResourceId, T[] objects) 第一个参数 Context对象 第二个参数Item布局的资源Id 第三个参数Item布局相对应的控件TextView的Id 需要适配的数据数组
  • 25. 5.3 ListView控件5.3.3 案例——Android应用市场前面介绍了ListView和几种常见的数据适配器,接下来通过一个案例Android应用市场来演示如何使用ListView以及如何对其进行数据适配。
  • 26. 5.3 ListView控件 多学一招:如何使用其他Adapter适配数据前面的案例只运用了BaseAdpater适配ListView,使用BaseAdapter适配数据需要重写其四个方法。而SimpleAdapter和ArrayAdapter只需一行代码即可适配数据。 ListView mListView = (ListView) findViewById(R.id.lv); mListView.setAdapter(new ArrayAdapter(this, R.layout.list_item, R.id.tv_list, names));
  • 27. 5.3 ListView控件5.3.4 案例——商品展示 开发一个购物车,需要将购物车中的商品以列表的形式展示,并且还需要对购物车中的商品进行增删改查操作。要实现这些功能就需要使用ListView和SQLite数据库。 接下来通过一个商品展示案例结合ListView和SQLite数据库来实现在界面上操作数据库。
  • 28. 5.4 本章小结本章讲解了SQLite数据库和ListView控件的相关知识,首先简单地介绍了SQLite数据库,然后讲解了如何使用SQLite数据库以及ListView。SQLite数据库和ListView这两个知识点非常重要,在实际开发中可以实现很多功能,例如电子商城中的购物车、网易新闻客户端等。