数据库存储网络请求

package animtest.com.example.e531.database_sample.db;

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

/**
 * Created by jane on 2018/4/25.
 */

public class MyHelper extends SQLiteOpenHelper {

    //确定数据库的名子及版本号
    public MyHelper(Context context) {
        super(context, "mydatadb", null, 1);
    }

    //当数据库创建的时候回调
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        //创建数据表
        sqLiteDatabase.execSQL("create table users (id integer primary key autoincrement,path text,jsondata text)");



    }

    //版本升级
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

-----------------------------------------------------------------------------------------

package animtest.com.example.e531.database_sample.db;

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

/**
 * Created by jane on 2018/4/25.
 */

public class UsersDao {
    //数据库的帮助类
    private MyHelper helper;

    public UsersDao(Context context) {
        helper=new MyHelper(context);

    }

    /**
     * 插入数据
     * @param url  url地址
     * @param data json数据
     */
    public void addData(String url,String data){

        //得到一个可读可写的数据库
        SQLiteDatabase db = helper.getWritableDatabase();

        //先进行删除
        db.delete("users"," path=?",new String[]{url});

        ContentValues contentValues=new ContentValues();
        contentValues.put("path",url);
        contentValues.put("jsondata",data);

        //进行插入
        long rows = db.insert("users", null, contentValues);
        Log.d("zzz","addData-rows:"+rows);


    }

    /**
     * 根据指定的url 来查询数据
     * @param url
     * @return
     */
    public String queryData(String url){
        String json="";
        //得到一个可读可写的数据库
        SQLiteDatabase db = helper.getWritableDatabase();
        Cursor cursor = db.query("users", null, " path=?", new String[]{url}, null, null, null);

        while (cursor.moveToNext()){
            json=cursor.getString(cursor.getColumnIndex("jsondata"));
        }
        Log.d("zzz","---从数据库中获取---"+json);

        return  json;



    }


}

----------------------------------------------------------------------------------------------------

 //判断有没有网络
        if(NetStateUtil.isConn(this)){
            //请求网络数据
            new MyTask().execute(url);


        }else{
            Toast.makeText(this,"当前没有网络,请稍后再试!",Toast.LENGTH_SHORT).show();


            //从数据库中获取数据
            String s = usersDao.queryData(url);
            //展示数据

            showData(s);


 class MyTask extends AsyncTask<String,Void,String> {

        @Override
        protected String doInBackground(String... strings) {
            String str="";

            try {
                URL url=new URL(strings[0]);
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.setReadTimeout(5000);
                urlConnection.setConnectTimeout(5000);
                urlConnection.setRequestMethod("GET");

                if(urlConnection.getResponseCode()==200){
                    InputStream inputStream = urlConnection.getInputStream();
                    str= StreamToString.streamToStr(inputStream,"utf-8");
                }

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }


            return str;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);

            //将json数据缓存到数据库中
            usersDao.addData(url,s);
            //展示数据
            showData(s);


        }
    }

    private void showData(String s) {

        if(!s.equals("")) {
            //解析,显示
            Gson gson = new Gson();
            DataDataBean result = gson.fromJson(s, DataDataBean.class);

            //取得列表要显示的数据
            List<DataDataBean.ResultsBean> datalists = result.getResults();

            if (operType == 1) {
                list.clear();//刷新时,清空集合中所有的数据
            }
            list.addAll(datalists);
            setLvAdapter();
        }
        //关闭头尾视图
        pullToRefreshGridView.onRefreshComplete();

    }


猜你喜欢

转载自blog.csdn.net/qq_14876513/article/details/80171385
今日推荐