zoukankan      html  css  js  c++  java
  • Android的数据存储

    Android的数据存储推荐俩种方式:SharedPreferences存储(非重要数据)和SQLite关系数据库存储

    一、SharedPreferences存储

        存储位置:data/data/<package name>/shared-prefs/目录

        存:SharedPreferences.Editor类
    	getSharedPreferences(文件名,MODE_PRIVATE或MODE_MULTI_PROCESS).edit():获得SharedPreferences.Editor类,
    	                   MODE_PRIVATE为默认操作模式, 与传入0相同效果,表示只有当前应用程序可操作这个文件。
    	                   MODE_MULTI_PROCESS为共享模式,可有多个进程对文件操作
    
    
             putXxx(String key,Xxx value):以键值对方式对数据进行存储
    
    
             commit():提交存储。


        取:SharedPreferences类
              getSharedPreferences(文件名,MODE_PRIVATE或MODE_MULTI_PROCESS):获得SharedPreferences类
    
                    MODE_PRIVATE为默认操作模式,与传入0相同效果,表示只有当前应用程序可操作这个文件。
    
                    MODE_MULTI_PROCESS为共享模式,可有多个进程对文件操作
    
              getXxx(String key,Xxx default):第一个参数为键,第二个参数为找不到对应键时的返回值

    二、SQLite关系数据库存储

            SQLite:内嵌在Android的一个关系数据库,支持sql语句。

            涉及相关类:SQLiteOpenHelper和SQLiteDatabase和Cursor

    1、SQLiteOpenHelper是一个抽象类,用于数据库的创建,版本升级,获得SQLiteDatabase对象等

            PartOne:以下为自定义类(MyHelper)继承于SQLiteOpenHelper要定义的变量,和重写方法

                public static String Xxx="........":自定义的建表sql语句,在onCreate()里调用来创建表,public static可在外部随时修改
    
                SQLiteOpenHelper():调用super(X,X,X,X)传入获得的四个参数即可
    
                onCreate(SQLiteDatabase db):创建数据库时调用的方法,可执行sql语句创建表
    
                onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) :构建传入版本号高于当前数据库版本号时调用方法,可用来升级数据库。
                用switch(oldVersion)对oldVersion已存在数据库版本号进行判断,再执行相应的升级数据库的sql语句,switch()不加break可让数据库动升级至最新。

             PartTwo:外部调用方法(即提供给外部方法):

    SQLiteOpenHelper(Context,String name,CursorFactory factory,int version):构建方法,context一般传入当前活动this即
    
                                   可,name为数据库名.db,factory一般传入null,version传入数据库的版本号(当传入版本号高于已创建版本
    
                                   号时,会调用onUpgrade()方法,未创建数据库时会调用onCreate()方法)
    
    getReadableDatabase(): 创建或打开数据库(不存在时创建,已存在数据库则打开),获得可读可写的SQLiteDatabase对象,
    
                                            在存储空间满时获得一个只读SQLiteDatabase对象                             
    
    getWritableDatabase():  创建或打开数据库(不存在时创建,已存在数据库则打开),获得可读可写的SQLiteDatabase对象,
    
                                            在存储空间满时出现异常。

    2、SQLiteDatabase对象:通过getReadableDatabase()或getWritableDatabase()获得,用来执行SQL语句
        
        execSQL(String SQL,new String[]{"参数1","参数2"....}):执行insert,delete,updata的SQL语句,SQL为执行语句,SQL语句
                   
                                                             里可设置未知参数为?,在第二个参数String数组里设置,参数必须
    
                                                             都设置为String类型.也可不设置未知参数,第二个参数直接传入null
    
        rawQuery(String SQL,new String[]{"参数1","参数2"....}):与execSQL同理,返回一个Cursor对象

    3、Cursor对象:查询SQL语句返回的数据表(结果集)

            

             moveToFirst():将行指针移动到数据表第一行,空则返回null
    
             moveToNext():将行指针移动到数据表下一行
    
             moveToLast():将行指针移动到数据表第一行
    
             moveToPosition(int position):将行指针移动到指定行
    
             getXxx(int Index):根据列索引值取出Xxx类型数据,索引值从0开始,与ResultSet不同
    
             getColumnIndex(String name):根据列名获得列索引值
    
             getColumnName(int Index):根据列索引值获得列名
    
             close():关闭数据表(结果集)
    
              public abstract boolean isFirst():判断结果集指针是否指在第一行
    
              public abstract boolean isLast():判断结果集指针是否指在最后一行

             使用完Cursor一定要调用close()关闭数据表

                    

  • 相关阅读:
    Topcoder SRM656div1 250 ( 期望DP )
    SCAU 2015 GDCPC team_training1
    第五次群赛暨清明节专场
    HDU 2783 You’ll be Working on the Railroad(最短路)
    HDU 4013 Distinct Subtrees(树的最小表示)
    HDU 4014 Jimmy’s travel plan(图计数)
    SCAU 2015 GDCPC team_training0
    HDU 1024 Max Sum Plus Plus (递推)
    UVA 12849 Mother’s Jam Puzzle( 高斯消元 )
    HDU 4285 circuits( 插头dp , k回路 )
  • 原文地址:https://www.cnblogs.com/MrQlyn/p/10236336.html
Copyright © 2011-2022 走看看