Android基础知识存储篇SQLite SharedPreference 以及File

 

 SQLite一款轻量级的关系型数据库运算速度快占用资源少

一、创建数据库

新建一个Java文件继承SQLiteOpenHelper 重写onCreate() 和onUpgrade()方法具体的代码如下所示:

public class MyDataBase extends SQLiteOpenHelper {
    private Context mcontext;
    public MyDataBase(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);

        mcontext=context;
       
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //db.execSQL();
        //建表的语句
        
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

构造方法里指定数据库名字和版本号,在别的地方调用建立数据库的时候如下:

MyDatabaseHelper mydatabasehelper=new MyDatabaseHelper(this,“xxx.db”,null,1);

mydatabasehelper.getWritableDatabase();  //数据库创建成功

二、升级数据库

我们重写SQLiteOpenHelper类里的方法时有一个onUpgrad()方法还没有用到,所以更新数据库的话我们就用到了该方法,在该方法中调用一下onCreate()方法,还要在创建实例的时候  MyDatabaseHelper mydatabasehelper=new MyDatabaseHelper(this,“xxx.db”,null,2); 更新一下版本号。

三、数据库的操作

我们对数据库的操作无非就是对数据库中的表进行增删改查  CRUD,

插入数据:insert(“表”,null,values);

我们要新建一个ContentValues的实例,调用该实例的put()方法来组装数据,完事以后传到insert()方法里,insert()方法被触发就完成了书据的插入

更新数据:update("表",values,''name=?',new String[]{ "    xxxxxxx"});

这里的四个参数的前两个不再介绍,第三个和第四个是一对,用于进行判读,name=?中的?是一个占位符,用来匹配第四个参数

删除数据:delete("表","pages> ?",new String[ ] {"条件"});

同样第二个和第三个参数是匹配的条件。

查询数据:query("表",null,null,null,null,null,null);

query()方法返回一个Cursor 对象,我们可以记住cursor的各种getXXX()方法来得到我们要的数据

query()方法里参数的含义分别是:

table               表名   

columns          列名       

selection          where的约束条件     

selectionArgs   where的占位符 

groupBy           指定需要group by的列 

having              对group by的结果进行进一步的约束   

orderBy            指定查询结果的排序方式

 

  SharedPreference-----是使用键值对的方式来存储数据的

一、将数据存储到SharedPreference中

得到SharedPreference对象的方法:

(1).Context类中的getSharedPreference()方法

(2)Activity类中的getPreference()方法

(3)PreferenceManager类中的getDefaultSharedPreferences()

添加数据的步骤

调用SharedPreferences对象的edit()方法来获取一个SharedPreference.Editor对象

向SharedPreference.Editor对象中添加数据

调用apply()提交

代码示例:

SharedPreferences.Editor editor=getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString();
editor.putBoolean();
editor.putInt();
editor.apply();

二、读取数据

SharedPreferences preferences=getSharedPreferences("data",MODE_PRIVATE);
String name=preferences.getString();
int age=preferences.getInt();

将数据存储到文件中

一、数据存储到文件中

Context类中提供了一个openFileOutput()方法,可以将数据存储到指定的文件中。

openFileOutput()方法返回的是一个FileOutputStream对象,得到这个对象以后就可以使用java的流来将数据写入到文件中。具体代码如下:

public void save(){
    
    String data="this is data";
    FileOutputStream fileOutputStream=null;
    BufferedWriter bufferedWriter=null;
    try {
        fileOutputStream=openFileOutput("data", Context.MODE_PRIVATE);
        bufferedWriter=new BufferedWriter(new OutputStreamWriter(fileOutputStream));
        bufferedWriter.write(data);
    }catch (IOException e){
        e.printStackTrace();
    }finally {
        try {
            if (bufferedWriter!=null){
                bufferedWriter.close();
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

二、从文件中读取数据

Context类中还提供了一个openFileInput()方法用于从文件中读取数据具体代码如下:

public  String read(){
    FileInputStream fileInputStream=null;
    BufferedReader bufferedReader=null;
    StringBuilder  stringBuilder=new StringBuilder();
    try {
        fileInputStream=openFileInput("data");
        bufferedReader=new BufferedReader(new InputStreamReader(fileInputStream));
        String line="";
        while ((line=bufferedReader.readLine())!=null){
            stringBuilder.append(line);
        }

    }catch (IOException e){
        e.printStackTrace();
    }finally {
        if (bufferedReader!=null){
            try{
                bufferedReader.close();
            }catch (IOException e){
                e.printStackTrace();
            }
        }
        return  bufferedReader.toString();
    }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值