SQLite数据库做缓存到SD卡,没网加载数据库数据。

SQLite数据库缓存:

首先缓存分好几种,可存短暂性存内存,也可放到磁盘,我这里就是利用Sqlite数据库存到SD卡中的。

那么,来缕缕思路,什么情况下需要缓存数据,当你打开app时没网一个大白板。哇好糟心,这个时候缓存数据就比较重要了,最起码给人视觉上是有视图效果的。那么就是判断有网的时候直接加载网络数据,顺便存进一组数据进数据库(图片路径也可以,用ImageLoader去展示),等判断到没网的时候,直接调用数据库查询方法,再传给适配器。

写一个判断网络判断工具类,判断是否有网,有网做网络请求,同时清空数据库,避免重复,没网加载数据库。

if (netWork) {
            
            //调用网络请求方法
            getJsonData(path + index + "/" + page);
        } else {
            /**
             * 没网查询数据库去展示
             */
            ArrayList<JsonBean.ResultsBean> resultsBeans = dao.queryData();
           
            //集合不为空执行
            if (resultsBeans != null) {
                //适配器
                MyAdapter myAdapter = new MyAdapter(resultsBeans , getActivity());
                prl.setAdapter(myAdapter);
            }
        }

创建数据库,建表页 ,继承SQLiteOpenHelper 重写下面三个方法

public class MySql_dp extends SQLiteOpenHelper {
    //创建数据库方法
    public MySql_dp(Context context) {
        super(context, "my_db", null, 1);
    }
    //创建表方法
    @Override
    public void onCreate(SQLiteDatabase db) {
        //主键自增,存了一个字段
        String sqlTable = "CREATE TABLE cache(id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT,url TEXT)";
        db.execSQL(sqlTable);
    }
    //更新数据库方法
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

 在创建个数据库管理者,里面做

public class MySql_dao {

    private final SQLiteDatabase db;
    private ArrayList<JsonBean.ResultsBean> list;
    
    //构造方法
    public MySql_dao(Context context) {
        //实例化sql数据库类
        MySql_dp mySql_dp = new MySql_dp(context);
        //数据库执行写入的操作
        db = mySql_dp.getWritableDatabase();
    }

    //添加,直接传过来一个集合
    public void insertData(ArrayList<JsonBean.ResultsBean> list) {
        //根据集合长度进行添加遍历
        for (int i = 0; i < list.size(); i++) {
            ContentValues values = new ContentValues();
            values.put("title", list.get(i).getDesc());
            values.put("url", list.get(i).getPic_url());
            db.insert("cache", null, values);
        }
    }

    //查询,返回类型集合
    public ArrayList<JsonBean.ResultsBean> queryData() {
        Cursor query = db.query("cache", null, null, null, null, null, null);
        ArrayList<JsonBean.ResultsBean> list = new ArrayList<>();
        while (query.moveToNext()) {
            String title = query.getString(query.getColumnIndex("title"));
            String url = query.getString(query.getColumnIndex("url"));
            //实例化对象--->赋值
            Data data = new Data();
            data.setNews_title(tilte);
            data.setPic_url(url);
            //对象添加到集合
            list.add(data);
        }
        //关游标
        query.close();
        return list;
    }

    //删除,库内所有数据
    public void deleteData() {
        db.delete("cache", null, null);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43917449/article/details/86433346