当前位置: 代码迷 >> Android >> android札记3
  详细解决方案

android札记3

热度:47   发布时间:2016-05-01 14:11:34.0
android笔记3

Pull解析器比SAX更简单,更容易理解;
Android集成了PULL解析器,
Pull解析器触发的事务是一个数字;
SAX解析触发的事务是一个函数的调用;
parser.getName();得到解析器当前指向的元素的名称
parser.getAttributeValue(0)这个是通过索引值得到属性的值的;
得到属性,如果属性有多个,顺序又不一样,那么可以用带名称空间的那一个,没有名称空间的就写为NULL;
---------------------------------------------------
SAX没有提供生成XML文件的类,所以要生成的话还要引入第三方,所在不太直观,也不太好理解;
用PULL生成XML文件;
serializer.setOutput(outputStream,encoding)
outputStream可是文件,内存,缓存,
encoding="UTF-8";

Pull解析器也采用事件驱动,触发的事务是一个数字;解析器不用从前到后都解析,
可以只解析其中的一部分的,而SAX解析则是从头到尾都要解析一遍;

-------------------------------------------------
存储软件配置参数:
getSharedPreferences("itcast",Context.MODE_PRIVATE);
itcast是文件名,代表itcast.xml,SharedPreferences是采用xml存贮的;
editor.commit()提交数据到背后的xml文件中;否则editor里面的值一直在内存里面;
可以通过两个方法得到SharedPreferences
this.getPreferences(Context.MODE_PRIVATE)这上将参数放到一个以简单类名为名的xml文件中;

Context context=getContext().createPackageContext(“cn.itcast.preferences”,Context.CONTEXT_IGNORE_READABLE)这个可以创建其他应用的上下文的,
SQLite最大的特点是你可以保存任何类型的数据到任何字段中,无论这列声明的数据类型是什么。
但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数, 当向这种字段保存除整数以外的数据时,将会产生错误。
SQLite 在解析CREATE TABLE 语句时,会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息,
分页SQL与mysql类似,下面SQL语句获取5条记录,跳过前面3条记录
select * from Account limit 5 offset 3 或者 select * from Account limit 3,5
首先我们创建数据库,还有数据表
第二表:使用androd提供的API和SQL语句来完成;

SQLiteOpenHelper的构造函数的第二个参数是数据库的名称;
第三个参数是产生游标的工厂,若没有则置为NULL;
onCreate(SQLiteDatabase db)当用户第一次使用软件的时候,就会被调用;
onUpgrade();当版本变更的时候调用,比如;从1变为2的时候就会调用这个方法;
SQLiteDatabase db;
db.execSQL(HQL)这个是有更新行为的就用这句;

只有调用dbOpenHelper.getWriteableDatabase()这两个方法的时候,数据库才会创建;
只有当数据库空间满了才用getReadableDatabase();
其他的都用getWriteableDatabase()

SQLiteDatebase这个类就代表了一个数据库;
getReadableDatabase();是在数据库空间满的情况下使用的;
getWriteableDatabase()以读写的方式打开数据库;以这个方法打开数据库时当数据库空间满意的话则会以getReadable这个方法打开;
一般我们用的都是getWriteableDatabase()这个方法;

SQLiteDatabase db=dbOpenHelper.getWritableDatabase();
SQLiteDatabase db=dbOpenHelper.getWritableDatabase();
返回的是同一个用户的实例;

db.insert("person",null ,null)这一句是不能插入记录的;
db.insert("person",“name” ,null)
第二个参数可以是主键,既使是赋为空值,但是它也会自增的,
当第三个参数为NULL,又为了在数据库里面插入一条记录,则使第二个参数不为NULL,默认给第二个参数赋一个空值;
db.endTransaction,结束事务,一个是提交,一个是回rollback
db.setTransactionSuccessful(),设置事务标志为成功,否则当结束事务的时候就会是rollback;
如果是rollback则它的修改是不能成功的;


? extends Map<String,?>这里面说的是必须是Map类型;

当出现_id出现错误;解决方法为,方法一把表的列名改为_id(主键的名称)
另一个方法是在查询的时候改为_id,

  相关解决方案