数据存储与访问.ppt
8.4数据分享8.4.2创建数据提供者继承ContentProvider,并重载六个函数新建立的类继承ContentProvider后,共有六个函数需要重载,分别是delete():删除数据集insert():添加数据集qurey():查询数据集update():更新数据集onCreate():初始化底层数据集和建立数据连接等工作getType():返回指定URI的MIME数据类型如果URI是单条数据,则返回的MIME数据类型应以开头如果URI是多条数据,则返回的MIME数据类型应以开头8.3数据库存储8.3.3代码建库代码的第5行到第7行是创建表的SQL命令代码第10行和第15行分别重载了onCreate()函数和onUpgrade()函数,这是继承SQLiteOpenHelper类必须重载的两个函数onCreate()函数在数据库第一次建立时被调用,一般用来创建数据库中的表,并完成初始化工作在代码第11行中,通过调用SQLiteDatabase实例的execSQL()方法,执行创建表的SQL命令onUpgrade()函数在数据库需要升级时被调用,一般用来删除旧的数据库表,并将数据转移到新版本的数据库表中在代码第16行和第17行中,为了简单起见,并没有做任何数据转移,而仅仅删除原有的表后建立新的数据表如果保存数据库文件的磁盘空间已满,调用getWritableDatabase()函数则无法获得可读写的数据库实例,这时可以调用getReadableDatabase()函数,获得一个只读的数据库实例04getWritableDatabase()函数用来建立或打开可读写的数据库实例,一旦函数调用成功,数据库实例将被缓存,在需要使用数据库实例时就可以调用这个方法获取数据库实例,务必在不使用时调用close()函数关闭数据库058.3.3代码建库01SQLiteOpenHelper类的getWritableDatabase()函数和getReadableDatabase()函数是可以直接调用的函数03程序开发人员不应直接调用onCreate()和onUpgrade()函数,而应由SQLiteOpenHelper类来决定何时调用这两个函数028.3数据库存储8.3数据库存储8.3.3代码建库如果不希望使用SQLiteOpenHelper类,也可以直接使用SQL命令建立数据库,方法是:先调用openOrCreateDatabases()函数创建数据库实例然后调用execSQL()函数执行SQL命令,完成数据库和数据表的建立过程,其示例代码如下1privatestaticfinalStringDB_CREATE=createtable+2 DB_TABLE+(+KEY_ID+integerprimarykeyautoincrement,+3 KEY_NAME+textnotnull,+KEY_AGE+integer,+KEY_HEIGHT+float);;4publicvoidcreate(){5 db.openOrCreateDatabases(DB_NAME,context.MODE_PRIVATE,null)6 db.execSQL(DB_CREATE);7}8.3数据库存储8.3.4数据操作数据操作指的是对数据的添加、删除、查找和更新操作虽然程序开发人员完全可以通过执行SQL命名完成数据操作,但这里仍然推荐使用Android提供的专用类和方法,这些类和方法的使用更加简洁、方便为了使DBAdapter类支持数据添加、删除、更新和查找等功能,在DBAdapter类中增加下面的函数insert(Peoplepeople)用来添加一条数据queryAllData()用来获取全部数据queryOneData(longid)根据id获取一条数据deleteAllData()用来删除全部数据deleteOneData(longid)根据id删除一条数据updateOneData(longid,Peoplepeople)根据id更新一条数据8.3数据库存储8.3.4数据操作deleteAllData()用来删除全部数据deleteOneData(longid)根据id删除一条数据updateOneData(longid,Peoplepeople)根据id更新一条数据1publicclassDBAdapter{2 publiclon