Android中的数据存储

来源:互联网 发布:php蜘蛛程序 编辑:程序博客网 时间:2024/06/08 08:32
一、SharedPreferences存储数据

适用范围:保存少量的数据。格式简单:基本类型的值,字符串等。比如配置信息(游戏中是否打开音效,震动效果,得分等)


原理:保存基于XML文件存储的key-value值对数据。


实现:不可直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String name,int mode)来获取。
         
         name是xml的文件名。
         mode可以如下:
                                  

                 Context.MODE_PRIVATE: 指定该SharedPreferences数据只能被本应用程序读、写。

                 Context.MODE_WORLD_READABLE:  指定该SharedPreferences数据能被其他应用程序读,但不能写。

                 Context.MODE_WORLD_WRITEABLE:  指定该SharedPreferences数据能被其他应用程序读,写


编辑:SharedPreferences
Editor方法:
                            

           SharedPreferences.Editor clear():清空SharedPreferences里所有数据


           SharedPreferences.Editor putXxx(String key , xxx value): 向SharedPreferences存入指定key对应的数据,其中xxx 可以是boolean,float,int等各种基本类型据


           SharedPreferences.Editor remove(): 删除SharedPreferences中指定key对应的数据项


           boolean commit(): 当Editor编辑完成后,使用该方法提交修改


二、文件存放数据

适用范围:文件数据的存储


实现:Context提供两个方法来读写文件IO流

           FileInputStream fin = openFileInput(String name);

           FileOutputStream fout = openFileOutput(String name,int mode);


其中mode的值:


           MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND

           MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。

           MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;

           MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。



其他重要方法:


           getDir(String name , int mode):在应用程序的数据文件夹下获取或者创建name对应的子目录

           File getFilesDir():获取该应用程序的数据文件夹得绝对路径

           String[] fileList():返回该应用数据文件夹的全部文件    、


PS:SD卡读取
 Environment.getExternalStorageDirectory()方法来获取外部存储器,也就是SD卡的目录,或者使用"/mnt/sdcard/"目录



三、SQLite存储读取

适用范围:数据库你懂的。这个叫轻量级嵌入式数据库引擎。支持SQL语言,并且只利用很少的内存。适合存储复杂数据。


实现:

SQLiteDatebase类

对于添加、更新和删除来说,我们都可以使用


 db.executeSQL(String sql);   db.executeSQL(String sql, Object[] bindArgs);//sql语句中使用占位符,然后第二个参数是实际的参数集 其中:sql就是标准数据库语言也有方便的方法:
db.insert(String table, String nullColumnHack, ContentValues values);  db.update(String table, Contentvalues values, String whereClause, String whereArgs);  db.delete(String table, String whereClause, String whereArgs);


数据查询
db.rawQuery(String sql, String[] selectionArgs);  db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy);  db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);  db.query(String distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit); 

需要使用可详细查询。


我们完成了对数据库的操作后,记得调用SQLiteDatabase的close()方法释放数据库连接。否则容易出现SQLiteException。


通常使用SQLiteOpenHelper 类管理和维护数据库


为了能够更好的管理和维护数据库,我们会封装一个继承自SQLiteOpenHelper类的数据库操作类,然后以这个类为基础,再封装我们的业务逻辑方法。


SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新。一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法。


方法名方法描述SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version)

构造方法,其中

context 程序上下文环境 即:XXXActivity.this;

name :数据库名字;

factory:游标工厂,默认为null,即为使用默认工厂;

version 数据库版本号

onCreate(SQLiteDatabase db)创建数据库时调用onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion)版本更新时调用getReadableDatabase()创建或打开一个只读数据库getWritableDatabase()创建或打开一个读写数据库


PS:

Android sqlite3数据库管理工具

Android SDK的tools目录下提供了一个sqlite3.exe工具,这是一个简单的sqlite数据库管理工具。


程序运行生成的*.db文件一般位于"/data/data/项目名(包括所处包名)/databases/*.db",因此要对数据库文件进行操作需要先找到数据库文件:


1、进入shell 命令

adb shell

2、找到数据库文件

#cd data/data#ls                --列出所有项目#cd project_name   --进入所需项目名#cd databases    #ls                --列出现寸的数据库文件

3、进入数据库

#sqlite3 test_db   --进入所需数据库

会出现类似如下字样:

SQLite version 3.6.22Enter ".help" for instructionsEnter SQL statements terminated with a ";"sqlite>

至此,可对数据库进行sql操作。


4、sqlite常用命令

>.databases        --产看当前数据库>.tables           --查看当前数据库中的表>.help             --sqlite3帮助>.schema            --各个表的生成语句
1 0
原创粉丝点击