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();
}