关于Android系统的SqLite数据库的简单应用---------音频播放器的播放列表目录第一部分SqLite数据库的简介...............................................................2I.什么是SQLite:.............................................................................2II.SQLite的特性:...........................................................................2III.什么是SQLiteDatabase..............................................................2IV.什么是SQLiteOpenHelper...........................................................2V.什么是ContentValues类............................................................3VI.什么是Cursor..........................................................................3第二部分关于SqLite基本操作以及常用类..........................................3I.SQLiteOpenHelper类.....................................................................3II.SQLiteDatabase类.........................................................................4第三部分音频播放器的播放列表实现逻辑流程图..............................6第四部分具体实现音频播放器的播放列表..........................................6I.建立SQLite数据库...........................................................................6II.构建操作数据库的工具ContentProvider..........................7III.构建表..............................................................................................9IV.将本地多媒体文件添加到播放列表............................................10V.显示播放列表................................................................................10VI删除播放列表相关选中的记录..................................................12第一部分SqLite数据库的简介I.什么是SQLite:SQLite是一款轻量级数据库,它的设计目的是嵌入式,而且它占用的资源非常少,在嵌入式设备中,只需要几百KB。II.SQLite的特性:•轻量级:使用SQLite只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。•独立性:SQLite数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。•隔离性:SQLite数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。•跨平台:SQLite目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如:Android。•多语言接口:SQLite数据库支持多语言编程接口。•安全性:SQLite数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。优点:1.能存储较多的数据;2.能将数据库文件存放到SD卡中。III.什么是SQLiteDatabase一个SQLiteDatabase的实例代表了一个SQLite的数据库,通过SQLiteDatabase实例的一些方法,我们可以执行SQL语句,对数SqLite据库进行增、删、查、改的操作。需要注意的是,数据库对于一个应用来说是私有的,并且在一个应用当中,数据库的名字也是惟一的。IV.什么是SQLiteOpenHelper根据这名字,我们可以看出这个类是一个辅助类。这个类主要生成一个数据库,并对数据库的版本进行管理。当在程序当中调用这个类的方法getWritableDatabase(),或者getReadableDatabase()方法的时候,如果当时没有数据,那么Android系统就会自动生成一个数据库。SQLiteOpenHelper是一个抽象类,我们通常需要继承它,并且实现里边的3个函数:构造函数、onCreate和onUpgrade方法来处理新的数据库的创建和更新到新的版本。V.什么是ContentValues类ContentValues类和Hashmap/Hashtable比较类似,它也是负责存储一些名值对,但是它存储的名值对当中的名是一个String类型,而值都是基本类型。VI.什么是CursorCursor在Android当中是一个非常有用的接口,通过Cursor我们可以对从数据库查询出来的结果集进行随机的读写访问。第二部分关于SqLite基本操作以及常用类I.SQLiteOpenHelper类其中:getReadableDatabase()得到可读的数据库,返回SQLiteDatabase对象,然后通过对象进行数据库操作。getWritableDatabase()得到可写的数据库,返回SQLiteDatabase对象,然后通过对象进行数据库操作。onCreate(SQLiteDatabasedb)在第一次创建数据库时调用。onUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)在更改数据库时都会调用。onOpen(SQLiteDatabasedb)当数据库打开时调用。close()关闭数据库。实例:importandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteDatabase.CursorFactory;importandroid.database.sqlite.SQLiteOpenHelper;/***通过getReadableDatabase()和getWritableDatabase()可以获得数据库对象。*提供onCreate()-创建数据库时,onUpgrade()-升级数据库时,两个回调函数。*/publicclassDatabaseHelperextendsSQLiteOpenHelper{//按要求必须要有构造函数publicDatabaseHelper(Contextcontext,Stringname,CursorFactoryfactory,intversion){super(context,name,factory,version);}//当第一次得到SQLiteDatabase对象时,调用该方法@OverridepublicvoidonCreate(SQLiteDatabasedb){Stringsql=createtableMSG(idint,bodyvarchar(100));db.execSQL(sql);}//当更新数据库时执行该方法@OverridepublicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){System.out.println(更新了数据库!);//还可以写其他的操作}}II.SQLiteDatabase类这个类提供对数据库的一些基本操作,如insert(),delete(),update(),query()等常用方法。1.插入数据://生成ContentValues对象,key:列名,value:想插入的值ContentValuesvalues=newContentValues();values.put(id,1);values.put(body,hello);DatabaseHelperdbhelper=newDatabaseHelper(SqliteActivity.this,text_msg,null,2);//得到可写的SQLiteDatabase对象SQLiteDatabasedb=dbhelper.getWritableDatabase();//调用insert方法,将数据插入数据库//参数1:表名//参数2:如果你想插入空值,那么你必须指定它的所在的列db.insert(MSG,null,values);2.删除数据:DatabaseHelperdbhelper=newDatabaseHelper(SqliteActivity.this,text_msg,null,2);//得到可写的SQLiteDatabase对象SQLiteDatabasedb=dbhelper.getWritableDatabase();//调用delete方法,删除数据db.delete(MSG,id=?,newString[]{1});3.修改数据:ContentValuesvalues=newContentValues();values.put(body,mydear!);DatabaseHelperdbhelper=newDatabaseHelper(SqliteActivity.this,text_msg,null,2);//得到可写的SQLiteDatabase对象SQLiteDatabasedb=dbhelper.getWritableDatabase();//调用insert方法,将数据插入数据库//参数3:where子句?是占位符号,对应后面的1,这和web开发时的语法是一样的db.update(MSG,values,id=?,newString[]{1});4.查询数据:DatabaseHelperdbhelper=newDatabaseHelper(SqliteActivity.this,text_msg,null,2);SQLiteDatabasedb=dbhelper.getReadableDatabase();//参数1:表名//参数2:要想显示的列//参数3:where子句//参数4:where子句对应的条件值//参数5:分组方式//参数6:having条件//参数7:排序方式Cursorcursor=db.query(MSG,newString[]{id,body},id=?,newString[]{1},null,null,null);while(cursor.moveToNext()){intid=cursor.getInt(cursor.getColumnIndex(id));Stringname=cursor.getString(cursor.getColumnIndex(body));}第三部分音频播放器的播放列表实现逻辑流程图说明:1.将需要添加到播放列表的多媒体文件作为