




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八次第八次 SQLiteSQLite 和测试和测试 一 SQlite 介绍 在 Android 系统中可以用 SQLite 数据库来存储应用的数据 在 Android 系统中的很多 应用 比如 联系人 图库 音乐等都用 SQLite 数据库来存储数据 以后我们在开发应用 的时候也经常会用到 如果你要存储数据比较多 并且以后很可能还会去检索那些数据的 话 那就要选择使用 SQLite 数据库存储数据 SQLite 是一个开源的嵌入式关系数据库 它在 2000 年由 D Richard Hipp 发布 它可 以减少应用程序管理数据的开销 SQLite 可移植性好 很容易使用 很小 高效而且可靠 二 SQLite 特点 特点 无数据类型 SQLite 支持 NULL INTEGER REAL TEXT 和 BLOB 二进制对象 数据类型 虽 然它支持的数据类型只有五种 但实际上 SQLite 也支持 varchar m char n decimal n p 等数 据类型 只不过在运算或在保存时转换成相应的五种类型 例如 可以在 Integer 字段中存放字符串 或者在布尔型字段中存放浮点数 或者在字 符型字段中存放日期型值 但是有一种例外 如果你的主键是 INTEGER 那么只能存储 64 位整数 当向这种字段中保存除整数以外的数据时 将会产生错误 另外 SQLite 在解 析 CREATE TABLE 语句时 会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型 信息 CREATE TABLE person personid integer primary key autoincrement name varchar 20 这个 SQLite 数据库在解析这个语句的时候 它会忽略掉跟在 name 字段后面的 varchar 20 也就是说你可以往 name 字段填 SQLite 支持的那五种数据类型的任意一种 而且 name 字 段可以存任意长度的字符 长度 20 不起作用 也就是说可以把 SQLite 数据库近似看作是 一种无数据类型的数据库 你可以把任何类型的资料存放在非 Integer 类型的主键之外的其 它字段上去 另外字段的长度也是没有限度的 三 SQLite 可以解析的 SQL 语句 SQLite 可以解析大部分的标准 SQL 语句 查询语句 select from 表名 where 条件子句 group by 分组字句 having order by 排序子句 分页语句 select from Account limit 5 offset 3 或者 select from Account limit 5 3 插入语句 insert into 表名 字段列表 values 值列表 更新语句 update 表名 set 字段名 值 where 条件子句 删除语句 delete from 表名 where 条件子句 四 项目 1 创建数据库 调用 SQLiteOpenHelper 类的 onCreate SQLiteDatabase db 或 onUpgrade SQLiteDatabase db int oldVersion int newVersion 就可以自动创建数据库 onCreate SQLiteDatabase db 初次使用软件时生成数据库 onUpgrade SQLiteDatabase db int oldVersion int newVersion 升级软件时更新数据库表结构 package nynu edu db import android content Context import android database sqlite SQLiteDatabase import android database sqlite SQLiteDatabase CursorFactory import android database sqlite SQLiteOpenHelper public class DbOpenHelper extends SQLiteOpenHelper Context 代表应用的上下文 Name 代表数据库的名称 Factory 代表记录集游标工厂 是专门用来生成记录集游标 记录集游标是对查询结果进行 迭 代的 Version 代表数据库的版本 如果以后升级软件的时候 需要更改Version版本号 那么 onUpgrade SQLiteDatabase db int oldVersion int newVersion 方法会被调 用 在这个方法中比较适合实现软件更新时修改数据库表结构的工作 版本号不能为0 public DbOpenHelper Context context super context booklibray db null 1 onCreate 方法在数据库第一次第一次被创建时候调用 特别适合生成数据库表的结构 它只会被调用一次 它的参数是操作数据库的工具类 提供了对数据的添 删 改 查等方 法 public void onCreate SQLiteDatabase db String sql create table student id integer primary key autoincrement name varchar 6 age integer db execSQL sql 数据库文件的版本号发生变化时会调用 public void onUpgrade SQLiteDatabase db int oldVersion int newVersion String sql alter table student add sex char 2 null db execSQL sql 编写测试类进行测试 测试类代码 package nynu edu test import nynu edu db DbOpenHelper import android test AndroidTestCase public class DbOpenHelperTest extends AndroidTestCase 在测试类中调用DatabaseHelper类的getWritableDatabase 或者 getReadableDatabase 方法的时候 它都会导致数据库的生成 public void testcreateDB throws Exception DbOpenHelper dbopenhelper new DbOpenHelper getContext dbopenhelper getWritableDatabase getWritableDatabase 和getReadableDatabase 方法都可以获取一个用于操作 数据库的SQLiteDatabase实例打开数据库 运行通过生成数据库文件存放在应用软件所在包的databases文件夹下 android metadata数据表 用于保存一些与数据表相关的信息 用户语言 第二张表是用户建的表 2 进行数据库的增删改查操作 在Android操作数据库的时候 会用到一个SQLiteDatabase类 是使用这个类的对象发送S QL语句去操作SQLite数据库 Student类 package nynu edu domain public class Student int id String sname int age String tel String sex public Student int id String sname int age String tel String sex this id id this sname sname this age age this tel tel this sex sex public Student String sname int age String tel String sex this sname sname this age age this tel tel this sex sex public int getId return id public void setId int id this id id public String getSname return sname public void setSname String sname this sname sname public int getAge return age public void setAge int age this age age public String getTel return tel public void setTel String tel this tel tel public String getSex return sex public void setSex String sex this sex sex public String toString return Student sname sname age age tel tel sex sex 数据操作类 package nynu edu db import java util ArrayList import java util List import android content Context import android database Cursor import android database sqlite SQLiteDatabase import nynu edu domain Student public class StudentService private Mydatabase databasehelper private SQLiteDatabase db public StudentService Context context this databasehelper new Mydatabase context db databasehelper getWritableDatabase public void insert Student s String sql insert into Student name age tel sex values Object args new Object s getSname s getAge s getTel s getSex db execSQL sql args public void update Student s String sql update Student set name age tel sex where id Object args new Object s getSname s getAge s getTel s getSex s getId db execSQL sql args public void delete int id String sql delete from Student where id Object args new Object id db execSQL sql args public Student select int id String sql select from Student where id String args new String id Cursor cs db rawQuery sql args while cs moveToNext int sid cs getInt 0 String sname cs getString cs getColumnIndex name int age cs getInt 2 String tel cs getString 3 String sex cs getString 4 Student s new Student sid sname age tel sex return s cs close return null public List getScrollData int offset int maxresult List students new ArrayList SQLiteDatabase db databasehelper getWritableDatabase String sql select from student order by id asc limit String args new String String valueOf offset String valueOf maxresult Cursor cursor db rawQuery sql args while cursor moveToNext int sid cursor getInt 0 String name cursor getString 1 int age cursor getInt 2 String tel cursor getString 3 String sex cursor getString 4 Student student new Student sid name age tel sex students add student cursor close return students public Cursor getScrollcursor2 int offset int maxResult List students new ArrayList SQLiteDatabase db databasehelper getWritableDatabase sid as id必须把主键重命名为 id String sql select id as id name age tel sex from student order by id asc limit String args new String String valueOf offset String valueOf maxResult Cursor cursor db rawQuery sql args return cursor public long getLong String sql select count from Student Cursor cs db rawQuery sql null cs moveToFirst long num cs getLong 0 cs close return num 测试类进行测试 package nynu edu test import java util List import nynu edu db Mydatabase import nynu edu db StudentService import nynu edu domain Student import android test AndroidTestCase import android util Log public class MydatabseTest extends AndroidTestCase String tag MydatabseTest SuppressWarnings deprecation public void testonCreateDB Mydatabase mydatabase new Mydatabase getContext mydatabase getWritableDatabase public void testinsert StudentService service new StudentService getContext for int i 0 i 20 i Student s new Student 张三 15 i男 service insert s public void testselect StudentService service new StudentService getContext Student s service select 5 Log i tag s toString public void testupdate StudentService service new StudentService getContext Student s new Student 5 Liming 50 23455544343 男 service update s Log i tag s toString public void testdelete StudentService service new StudentService getContext service delete 20 public void testgetLong StudentService service new StudentService getContext long num service getLong Log i tag num public void testgetScrollData StudentService service new StudentService getContext List datas service getScrollData 0 5 for Student student datas Log i tag student toString 3 事务处理 public void paymount throws Exception SQLiteDatabase db dbopenhelper getReadableDatabase db beginTransaction 开始事务 try db execSQL update student set amount amount 50 where sid 2 db execSQL update student set amount amount 50 where sid 3 db setTransactionSuccessful 设置事务标记 catch Exception e e printStackTrace finally db endTransaction 结束事务 db close 5 使用ListView显示表中的数据 1 编写item xml布局文件 2 编写mai
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中国移动上海产业研究院博士后专项招聘笔试题库历年考点版附带答案详解
- 2025中国电信安全公司春季校园招聘笔试题库历年考点版附带答案详解版
- 2025年工业0行业智能制造与自动化生产研究报告
- 2025年建筑行业智能建筑技术与建筑设计研究报告
- 2025年数字货币行业区块链技术应用与未来发展研究报告
- 2025年文化传媒行业数字内容价值创新报告
- 土地分配的协议书
- 2025年区块链行业区块链技术应用案例与未来发展前景报告
- 2025年家居装饰行业个性化定制与绿色环保发展研究报告
- 2025年石油化工行业低碳生产技术研究报告
- 2025年合肥市轨道交通集团有限公司第二批次社会招聘12人考试历年参考题附答案详解
- 甘肃电网考试题目及答案
- 2025年专升本医学影像检查技术试题(含参考答案)解析
- 《互联网应用新特征》课件+2025-2026学年人教版(2024)初中信息技术七年级全一册
- 过节前安全培训课件
- 高二生物上学期第一次月考(安徽专用)(全解全析)
- 模具安全操作注意培训课件
- 3.2《参与民主生活 》- 课件 2025-2026学年度道德与法治九年级上册 统编版
- 农产品电子商务运营 教学大纲、教案
- 2025年秋新北师大版数学2年级上册全册同步教学设计
- 抖音短视频签约合同范本
评论
0/150
提交评论