Android SQLite

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Android程序设计SQLLite主要内容及重难点SQLite简介SQLiteOpenHelper使用方法使用adb访问SQLite使用Cursor提取数据数据的增删改查操作(重点)SQLite简介SQLite是一个轻量级的、嵌入式的、关系型数据库,支持SQL语言,开源,可移植性好。官网:SQLite基本上符合SQL-92标准,和其他的主要SQL数据库没什么区别。它的优点就是高效,Android运行时环境包含了完整的SQLite。一般的数据库采用的是固定的静态数据类型,SQLite采用动态数据类型,创建一个表时,可以在CREATETABLE语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的列不匹配,SQLite则会尝试将该值转换成该列的类型,如果不能转换,则该值将作为本身的类型存储,比如可以把一个字符串(String)放入INTEGER列。SQLite称这为“弱类型”。但有一个特例,如果是INTEGERPRIMARYKEY,则其他类型不会被转换,会报一个“datatypemissmatch”的错误。SQLite简介SQLite对事务的支持在事务处理方面,SQLite通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一s时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程想数据库执行写操作之前,必须获得独占锁。在获得独占锁之后,其他的读或写操作将不会再发生SQLite不支持的SQL标准SQLite不支持一些标准的SQL功能,特别是外键约束(FOREIGNKEYconstrains),嵌套transcaction和RIGHTOUTERJOIN和FULLOUTERJOIN,还有一些ALTERTABLE功能。除了上述功能外,SQLite是一个完整的SQL系统,拥有完整的触发器等。数据库存储在data/data/项目文件夹/databases/下SQLite数据类型基本数据类型NULL空值INTEGER带符号的整型REAL浮点型TEXT字符串文本BLOB二进制对象但实际上,sqlite3也接受如下的数据类型:smallint16位元的整数。interger32位元的整数。decimal(p,s)p精确值和s大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点後有几位数。如果没有特别指定,则系统会设为p=5;s=0。float32位元的实数。double64位元的实数。SQLite数据类型char(n)n长度的字串,n不能超过254。varchar(n)长度不固定且其最大长度为n的字串,n不能超过4000。graphic(n)和char(n)一样,不过其单位是两个字元double-bytes,n不能超过127。这个形态是为了支援两个字元长度的字体,例如中文字。vargraphic(n)可变长度且其最大长度为n的双字元字串,n不能超过2000date包含了年份、月份、日期。time包含了小时、分钟、秒。timestamp包含了年、月、日、时、分、秒、千分之一秒。datetime包含日期时间格式,必须写成'2010-08-05'不能写为'2010-8-5',否则在读取时会产生错误Android平台下数据库相关类SQLiteOpenHelper抽象类:通过从此类继承实现用户类,来提供数据库创建、打开、关闭等操作。SQLiteDatabase数据库访问类:执行对数据库的插入记录、查询记录等操作。SQLiteCursor查询结构操作类:用来访问查询结果中的记录SQLiteOpenHelper类Android提供了SQLiteOpenHelper帮助创建、管理数据库,在开发需要继承SQLiteOpenHelper类SQLiteOpenHelper类的常用方法getReadableDatabase():以只读方式打开数据库,应用于对数据的查询getWritableDatabase():以只读写方式打开数据库,应用于对数据的添加、修改和删除onCreate(SQLiteDatabasedb):创建数据库时的回调函数onOpen(SQLiteDatabasedb):打开数据库时的回调函数onUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion):更新数据库时的回调函数close():关闭数据库创建数据库SQLiteOpenHelper类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。SQLiteOpenHelper的子类,一般需要实现如下三个方法publicDBHelper(Contextcontext,Stringname,CursorFactoryfactory,intversion){}publicvoidonCreate(SQLiteDatabasedb){//使用execSQL()方法执行DDL语句}publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){}创建表和索引当创建表指定主键是SQLite会自动为主键添加索引如:db.execSQL(createtableuser(idINTEGERPRIMARYKEYAUTOINCREMENT,namevarchar(20),addressTEXT));更新数据的方法SQLlite提供了两种更新数据的方式:使用execSQL方法执行INSERT,UPDATE,DELETE等语句来更新表的数据。如:db.execSQL(INSERTINTOuser(name,address)VALUES(‘henen',’’2046));使用SQLiteDatabase对象的insert(),update(),delete()方法。这些方法把SQL语句的一部分作为参数。(Google推荐使用的方式)如:ContentValuescv=newContentValues();cv.put(name,“rose);cv.put(address,ShangHai);sdb.insert(表名,null,cv);查询数据的方法SQLite提供了两种查询数据的方式:使用rawQuery()直接调用SELECT语句。如果查询是动态的,使用rawQuery就会非常复杂。如:publicCursorrawQuery(){returnmDataBase.rawQuery(select*fromuserwhereid=?andname=?,newString[]{1,LiuMing});}使用SELECT语句段构建查询,SELECT语句内容做为query()方法的参数。(Google推荐使用的方式)。如:使用游标使用游标提取数据不管如何执行查询,都会返回一个CursorCurosr主要方法如下:getCount():获得结果集中有多少记录。moveToFirst():移动到第一行。moveToNext():移动到下一行,可遍历所有记录。isAfterLast():判断是否最后一行。getColumnNames():返回字段名。getColumnCount():返回字段号。getString(),getInt():得到给定字段当前记录的值。requery():重新执行查询得到游标。close():释放游标资源。publicCursorquery(){String[]columns={name,address};//第二个参数:要查询的列名//第三个参数:where语句//第三个参数:where语句中占位符的值//第四个参数:对查询结果进行分组//第五个参数:对分组结果进行限制//第六个参数:对查询结果进行排序returnmDataBase.query(USER_TABLE,columns,id=?,newString[]{1},null,null,null);}查询数据的方法使用adb访问SQLiteadbshell进入linux会话ls列出文件列表ls-l列出文件列表包括权限等详细信息cd目录名进入目录sqlite3数据库名打开数据库.schema查看元数据总结使用SQLite如何进行增删改查

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功