安卓系统android_黎活明_老师+开发培训课件(10)

上传人:li****i 文档编号:243098034 上传时间:2024-09-15 格式:PPT 页数:7 大小:277KB
返回 下载 相关 举报
安卓系统android_黎活明_老师+开发培训课件(10)_第1页
第1页 / 共7页
安卓系统android_黎活明_老师+开发培训课件(10)_第2页
第2页 / 共7页
安卓系统android_黎活明_老师+开发培训课件(10)_第3页
第3页 / 共7页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,北京传智播客教育,*,高级软件人才实作培训专家,!,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,北京传智播客教育,使用,SQLiteDatabase,操作,SQLite,数据库,除了前面给大家介绍的,execSQL(),和,rawQuery(),方法,,SQLiteDatabase,还专门提供了对应于添加,、,删除,、,更新,、,查询的操作方法:,insert(),、,delete(),、,update(),和,query(),。这些方法实际上是给那些不太了解,SQL,语法的菜鸟使用的,对于熟悉,SQL,语法的程序员而言,直接使用,execSQL(),和,rawQuery(),方法执行,SQL,语句就能完成数据的添加,、,删除,、,更新,、,查询操作。,Insert(),方法用于添加数据,,各个字段的数据使用,ContentValues,进行存放。,ContentValues,类似于,MAP,,相对于,MAP,,它提供了存取数据对应的,put(String key, Xxx value),和,getAsXxx(String key),方法,,key,为字段名称,,value,为字段值,,Xxx,指的是各种常用的数据类型,如:,String,、,Integer,等。,SQLiteDatabase db = databaseHelper.getWritableDatabase();,ContentValues values = new ContentValues();,values.put(name, ,传智播客,);,values.put(age, 4);,long rowid = db.insert(“person”, null, values);,/,返回新添记录的行号,与主键,id,无关,不管第三个参数是否包含数据,执行,Insert(),方法必然会添加一条记录,如果第三个参数为空,会添加一条除主键之外其他字段值为,Null,的记录。,Insert(),方法内部实际上通过构造,insert,语句完成数据的添加,,Insert(),方法的第二个参数用于指定空值字段的名称,相信大家对此参数会感到疑惑,此参数的作用是干嘛的?是这样的:如果第三个参数,values,为,Null,或者元素个数为,0, Insert(),方法必然要添加一条除了主键之外其它字段为,Null,值的记录,为了满足这条,insert,语句的语法,,insert,语句必须给定一个字段名,如:,insert into person(,name,) values(,NULL,),,倘若不给定字段名 ,,insert,语句就成了这样:,insert into person() values(),,显然这不满足标准,SQL,的语法。对于字段名,建议使用主键之外的字段,如果使用了,INTEGER,类型的主键字段,执行类似,insert into person(personid) values(NULL),的,insert,语句后,该主键字段值也不会为,NULL,。如果第三个参数,values,不为,Null,并且元素的个数大于,0,,可以把第二个参数设置为,null,。,北京传智播客教育,使用,SQLiteDatabase,操作,SQLite,数据库,delete(),方法的使用:,SQLiteDatabase db = databaseHelper.getWritableDatabase();,db.delete(person, personid?, new String2);,db.close();,上面代码用于从,person,表中删除,personid,小于,2,的记录。,update(),方法的使用:,SQLiteDatabase db = databaseHelper.getWritableDatabase();,ContentValues values = new ContentValues();,values.put(“name”, “,传智播客,”);,/key,为字段名,,value,为值,db.update(person, values, personid=?, new String1);,db.close();,上面代码用于把,person,表中,personid,等于,1,的记录的,name,字段的值改为“传智播客”。,http:/www.anzhuo.cc/ 安卓手机论坛,北京传智播客教育,使用,SQLiteDatabase,操作,SQLite,数据库,query(),方法实际上是把,select,语句拆分成了若干个组成部分,然后作为方法的输入参数:,SQLiteDatabase db = databaseHelper.getWritableDatabase();,Cursor cursor = db.query(person, new Stringpersonid,name,age, name like ?, new String%,传智,%, null, null, personid desc, 1,2);,while (cursor.moveToNext() ,int personid = cursor.getInt(0);,/,获取第一列的值,第一列的索引从,0,开始,String name = cursor.getString(1);,/,获取第二列的值,int age = cursor.getInt(2);,/,获取第三列的值,cursor.close();,db.close();,上面代码用于从,person,表中查找,name,字段含有“传智”的记录,匹配的记录按,personid,降序排序,对排序后的结果略过第一条记录,只获取,2,条记录。,query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit),方法各参数的含义:,table,:表名。相当于,select,语句,from,关键字后面的部分。如果是多表联合查询,可以用逗号将两个表名分开。,columns,:要查询出来的列名。相当于,select,语句,select,关键字后面的部分。,selection,:查询条件子句,相当于,select,语句,where,关键字后面的部分,在条件子句允许使用占位符“,?”,selectionArgs,:对应于,selection,语句中占位符的值,值在数组中的位置与占位符在语句中的位置必须一致,否则就会有异常。,groupBy,:相当于,select,语句,group by,关键字后面的部分,having,:相当于,select,语句,having,关键字后面的部分,orderBy,:相当于,select,语句,order by,关键字后面的部分,如:,personid desc, age asc;,limit,:指定偏移量和获取的记录数,相当于,select,语句,limit,关键字后面的部分。,北京传智播客教育,使用,SQLiteOpenHelper,对数据库进行版本管理,如果应用使用到了,SQLite,数据库,在用户初次使用软件时,需要创建应用使用到的数据库表结构及添加一些初始化记录,另外在软件升级的时候,也需要对数据表结构进行更新。在,Android,系统,为我们提供了一个名为,SQLiteOpenHelper,的类,该类用于对数据库版本进行管理,该类是一个抽象类,必须继承它才能使用。,为了实现对数据库版本进行管理,,SQLiteOpenHelper,类有两种重要的方法,分别是,onCreate(SQLiteDatabase db),和,onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion),当调用,SQLiteOpenHelper,的,getWritableDatabase(),或者,getReadableDatabase(),方法获取用于操作数据库的,SQLiteDatabase,实例的时候,如果数据库不存在,,Android,系统会自动生成一个数据库,接着调用,onCreate(),方法,,onCreate(),方法在初次生成数据库时才会被调用,在,onCreate(),方法里可以生成数据库表结构及添加一些应用使用到的初始化数据。,onUpgrade(),方法在数据库的版本发生变化时会被调用,数据库的版本是由程序员控制的,假设数据库现在的版本是,1,,由于业务的需要,修改了数据库表的结构,这时候就需要升级软件,升级软件时希望更新用户手机里的数据库表结构,为了实现这一目的,可以把原来的数据库版本设置为,2(,有同学问设置为,3,行不行?当然可以,如果你愿意,设置为,100,也行,),,并且在,onUpgrade(),方法里面实现表结构的更新。当软件的版本升级次数比较多,这时在,onUpgrade(),方法里面可以根据原版号和目标版本号进行判断,然后作出相应的表结构及数据更新。,getWritableDatabase(),和,getReadableDatabase(),方法都可以获取一个用于操作数据库的,SQLiteDatabase,实例。但,getWritableDatabase(),方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用的是,getWritableDatabase(),方法就会出错。,getReadableDatabase(),方法先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。,5,Activity,Activity,A visual user interface,通过,view,管理,UI,每一个有用户界面的应用至少包含一个,activity,一个应用可以有多个,activity,,其中一个作为,main activity,用于启动显示,Activity,通过,startActivity,或,startActivityForResult,启动另外的,activity,6,Activity,生命周期,Activity,通过,onCreate,被创建,当一个,activity,失去焦点,该,activity,将进入,pause,状态,系统在内存不足时会将其终止,当一个,activity,被另一个,activity,覆盖,该,activity,将进入,stop,状态,系统在需要内存的时候会将其终止,7,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!