Android入门05 -- 数据存储

2022-03-08  本文已影响0人  YanZi_33

SharedPreferences

SharedPreferences的使用注意事项:
SharedPreferences的创建
SharedPreferences的操作模式
SharedPreferences的增删改查
package com.example.yyshop.general.database;

import android.content.Context;
import android.content.SharedPreferences;

import static android.content.Context.MODE_PRIVATE;

public class SFSharedPreferences {

    private static volatile SFSharedPreferences mInstance;
    private SharedPreferences sharedPreferences;
    private SharedPreferences.Editor editor;

    public static synchronized SFSharedPreferences getInstance(Context context){
        if (mInstance == null) {
            synchronized (SFSharedPreferences.class) {
                if (mInstance == null) {
                    mInstance = new SFSharedPreferences(context);
                }
            }
        }
        return mInstance;
    }

    private SFSharedPreferences(Context context){
        if (sharedPreferences == null) {
            //创建SharedPreferences实例对象
            sharedPreferences = context.getSharedPreferences("config",MODE_PRIVATE);
            editor = sharedPreferences.edit();
        }
    }

    //存储数据
    public void save(String key,String data) {
        editor.putString(key,data);
        editor.commit();
    }

    //读取数据
    public String read(String key){
        String data = sharedPreferences.getString(key,"");
        return data;
    }

    //删除数据
    public void remove(String key) {
        editor.remove(key);
        editor.commit();
    }

    //清空所有数据
    public void clear() {
        editor.clear();
        editor.commit();
    }
}
public class SFShopCarFragment extends SFBaseFragment {
    @Override
    protected void initUI() {
        Button button = find(R.id.shopcar_button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), SFShopDetailActivity.class);
                startActivity(intent);

                SFSharedPreferences.getInstance(getContext()).save("name","yanzi");
                String name = SFSharedPreferences.getInstance(getActivity()).read("name");
                Log.i("SFShopCarFragment",name);
            }
        });
    }

    @Override
    protected int getLayoutId() {
        return R.layout.fragment_shopcar;
    }
}

SQLite数据库

抽象类SQLiteOpenHelper的两个抽象方法
package com.example.yyshop.general.database;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import com.example.yyshop.home.model.SFGoodModel;
import java.util.ArrayList;
import java.util.List;

public class SFSQLShopCarHelper extends SQLiteOpenHelper {

    //数据库版本号
    private static Integer Version = 1;

    //数据库的名称
    private static final String DATA_BASE_NAME = "shopcar.db";

    //购物车商品表
    private static final String SHOP_CAR_TABLE_NAME = "t_goods";

    //单例对象
    private static volatile SFSQLShopCarHelper mInstance;

    //在SQLiteOpenHelper的子类当中,必须有该构造函数
    private SFSQLShopCarHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        //必须通过super调用父类当中的构造函数
        super(context, name, factory, version);
    }

    private SFSQLShopCarHelper(Context context, String name, int version) {
        this(context,name,null,version);
    }

    private SFSQLShopCarHelper(Context context, String name) {
        this(context, name, Version);
    }

    private SFSQLShopCarHelper(Context context) {
        this(context,DATA_BASE_NAME);
    }

    public static synchronized SFSQLShopCarHelper getInstance(Context context) {
        if (mInstance == null) {
            synchronized (SFSharedPreferences.class) {
                if (mInstance == null) {
                    mInstance = new SFSQLShopCarHelper(context);
                }
            }
        }
        return mInstance;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.i("SFSQLShopCarHelper","开始创建数据库表 t_shopCar");
        createTable(db);
        Log.i("SFSQLShopCarHelper","完成创建数据库表 t_shopCar");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //数据库升级

    }

    //创建表
    private void createTable(SQLiteDatabase database){
        String create_shop_car_goods = "create table if not exists " + SHOP_CAR_TABLE_NAME +"(id integer primary key autoincrement,goodId text,goodName text,goodPic text,goodPrice text)";
        try {
            database.execSQL(create_shop_car_goods);
        } catch (Exception e) {
            e.printStackTrace();
            Log.i("SFSQLShopCarHelper", "创表shop_car_goods -- 出现异常");
        };
    }

    //插入单条数据
    public void insert(SFGoodModel model){
        SQLiteDatabase database = getWritableDatabase();

        String goodId = model.getGoodsId();
        String goodName = model.getGoodsName();
        String goodPic = model.getComPic();
        String goodPrice = model.getPrice();

        String insert = "insert into " + SHOP_CAR_TABLE_NAME + "(goodId,goodName,goodPic,goodPrice)values" + "('"+goodId+"','"+goodName+"','"+goodPic+"','"+goodPrice+"')";
        database.execSQL(insert);
        Log.i("SFShopCarFragment",insert);
        Log.i("SFShopCarFragment","插入了1条数据");
        database.close();
    }

    //查询所有商品
    public List<SFGoodModel> select(){
        SQLiteDatabase database = getReadableDatabase();
        List<SFGoodModel> models = new ArrayList<>();

        String select = "select * from " + SHOP_CAR_TABLE_NAME;
        Cursor cursor = database.rawQuery(select,null);

        while (cursor.moveToNext()) {
            String id = cursor.getString(cursor.getColumnIndex("id"));
            String goodName = cursor.getString(cursor.getColumnIndex("goodName"));
            String goodId = cursor.getString(cursor.getColumnIndex("goodId"));
            String goodPic = cursor.getString(cursor.getColumnIndex("goodPic"));
            String goodPrice = cursor.getString(cursor.getColumnIndex("goodPrice"));

            SFGoodModel model = new SFGoodModel();
            model.setGoodsId(goodId);
            model.setGoodsName(goodName);
            model.setGoodsId(goodPic);
            model.setGoodsId(goodPrice);
            models.add(model);
            Log.i("SFShopCarFragment", id + " " + goodName + " " + goodId + " " + goodPic + " " + goodPrice);
        }
        //关闭数据库
        cursor.close();
        database.close();
        return models;
    }

    //删除指定商品
    public void delete(SFGoodModel model) {
        SQLiteDatabase database = getReadableDatabase();
        String delete = "delete from " + SHOP_CAR_TABLE_NAME + " where goodid = '"+model.getGoodsId()+"'";
        try {
            database.execSQL(delete);
            Log.i("SFSQLShopCarHelper","成功删除一条数据");
            database.close();
        } catch (Exception e) {
            e.printStackTrace();
            Log.i("SFSQLShopCarHelper", "删除指定数据 -- 出现异常");
            database.close();
        }
    }

    //删除所有商品
    public void deleteAll(){
        SQLiteDatabase database = getReadableDatabase();
        String delete = "delete from " + SHOP_CAR_TABLE_NAME;
        try {
            database.execSQL(delete);
            Log.i("SFSQLShopCarHelper","成功删除所有数据");
            database.close();
        } catch (Exception e) {
            e.printStackTrace();
            Log.i("SFSQLShopCarHelper", "删除所有数据 -- 出现异常");
            database.close();
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读