Android--数据化存储

Android存储方式有以下几种:

  1. 文件存储
  2. SharedPreferences存储
  3. 数据库存储
  4. 手机外存储(SD卡)
  5. 云存储

一、文件存储
类似于JAVA存储数据到文件一样
二、SharedPreferences存储
其实就是一个xml文件,方便存取,能够很快的读取标签内容。

以下是总结第一二中使用方式的Demo源码:

package com.study.test.testapplication.acty;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.study.test.testapplication.R;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/**
 * Create by BruceXuheng on 2018/5/29
 * description :
 * 1、文件保存方法 save() 读取方法readLoad()
 * 2、SharedPreferences存储
 *      数据存储、获取SP
 **/

public class FileSaveActivity extends AppCompatActivity {

    private EditText mEditText;
    private Button mButton,mReadBtn;
    private Button mSpSave,mSpRead;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_file_save);

        init();

        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String str = mEditText.getText().toString();
                save(str);
            }
        });
        mReadBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String str = readLoad();
                Toast.makeText(FileSaveActivity.this, str, Toast.LENGTH_SHORT).show();
            }
        });
        mSpSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
                editor.putString("name","火锅配麻酱");
                editor.apply();
            }
        });
        mSpRead.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
                String name = pref.getString("name","爱你很走心");
                Toast.makeText(FileSaveActivity.this, name, Toast.LENGTH_SHORT).show();
            }
        });
    }

    private void init() {
        mEditText = (EditText) findViewById(R.id.edt_file_save);
        mButton = (Button) findViewById(R.id.save_content_file_btn);
        mReadBtn = (Button) findViewById(R.id.read_content_file_btn);

        mSpSave = (Button) findViewById(R.id.save_sp);
        mSpRead = (Button) findViewById(R.id.read_sp);
    }


    private void save(String string) {
        FileOutputStream out = null;
        BufferedWriter writer = null;

        try {
            out = openFileOutput("data", Context.MODE_PRIVATE);
            writer = new BufferedWriter(new OutputStreamWriter(out));
            writer.write(string);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (writer != null) {
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private String readLoad(){
        FileInputStream in = null;
        BufferedReader reader = null;
        StringBuilder content = new StringBuilder();

        try {
            in = openFileInput("data");
            reader = new BufferedReader(new InputStreamReader(in));
            String line = "";
            while((line = reader.readLine()) != null){
                content.append(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(reader != null){
                try {
                    reader.close();
                } catch (IOException e) {

                }
            }
        }

        return content.toString();
    }

}

三、SQLIte数据库存储
在Android使用Sqlite的时候,一定要掌握sqlite的基本功,这样才能灵活开发,确保数据存储ACID。

数据库创建和建表

package com.study.test.testapplication.database;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

/**
 * Create by BruceXuheng on 2018/6/5
 * description :
 *      数据库创建类
 *
 **/

public class MyDatabaseHelper extends SQLiteOpenHelper {

    private Context mContext;
    private static int dbVersion = 1;

    private String createBookSql = "create table Book ("
            +"id integer primary key autoincrement,"
            +"author text,"
            +"price text,"
            +"pages integer"
            +")";

    public MyDatabaseHelper(Context context) {
        super(context, "onceDB.db", null, dbVersion);
        mContext = context;
    }


//    创建数据库
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(createBookSql);
        Toast.makeText(mContext, "Create Success", Toast.LENGTH_SHORT).show();
    }

//    更新数据库
    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {

        db.execSQL("drop table if exists Book");
        Toast.makeText(mContext, "onUpgrade Success", Toast.LENGTH_SHORT).show();

    }
}

数据库操作帮助类:

package com.study.test.testapplication.database.control;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import com.study.test.testapplication.database.MyDatabaseHelper;

/**
 * Create by BruceXuheng on 2018/6/5
 * description :
 **/

public class OnceDBControl {

    private SQLiteDatabase db;
    private static MyDatabaseHelper mInstance = null;

    public synchronized static MyDatabaseHelper getInstance(Context context) {
        if (mInstance == null) {
            mInstance = new MyDatabaseHelper(context);
        }
        return mInstance;
    }
    public OnceDBControl(Context context) {
        getInstance(context);
        db = mInstance.getWritableDatabase();
    }

    public void insertMethod(){

        db.execSQL("insert into Book values(?,?,?,?)",new Object[]{null,"你好","第三页",13.14});


    }
    public void lookMethod(){

        Cursor cursor = db.rawQuery("select * from Book",null);
        while (cursor.moveToNext()){
            Log.e("chenxh",cursor.getString(cursor.getColumnIndex("id")));
            Log.e("chenxh",cursor.getString(cursor.getColumnIndex("author")));
            Log.e("chenxh",cursor.getString(cursor.getColumnIndex("pages")));
            Log.e("chenxh",cursor.getString(cursor.getColumnIndex("price"))+"");

        }

    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值