自写的SQLite保存本地缓存

本文介绍如何利用DB工具类实现数据缓存功能,包括数据的保存、读取以及缓存机制的实现。重点突出数据本地化存储与网络数据下载之间的交互流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)、个人习惯写BD工具类

public class DBTools {

	private class DataOpenHelper extends SQLiteOpenHelper {
		public DataOpenHelper(Context context) {
			super(context, "SYData.db", null, 1);
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			db.execSQL("create table data(id integer primary key,json text)");
			db.execSQL("insert into data values(?,?)", new String[] { "" + 1,
					"" });
			db.execSQL("insert into data values(?,?)", new String[] { "" + 2,
					"" });
		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

		}

	}

	/**
	 * 保存缓存
	 */
	public void saveJson(Context context, int id, String json) {
		DataOpenHelper helper = new DataOpenHelper(context);
		SQLiteDatabase db = helper.getWritableDatabase();
		db.execSQL("update data set json=? where id=?", new String[] { json,
				"" + id });
		db.close();
	}

	/**
	 * 读取缓存
	 */
	public String readJson(Context context, int id) {
		DataOpenHelper helper = new DataOpenHelper(context);
		SQLiteDatabase db = helper.getWritableDatabase();
		Cursor cursor = db.rawQuery("select json from data where id = ?",
				new String[] { "" + id });
		boolean b = cursor.moveToFirst();
		if (b) {
			String json = cursor.getString(cursor.getColumnIndex("json"));
			return json;
		}
		db.close();
		return "";
	}

	
}
(二)、封装一些方法
/**
	 * 缓存机制(即,从本地读取数据或网上下载数据)
	 */
	private void getDataOrUpdata() {
		// 读取本地缓存
		String result_hand = dbTools.readJson(getActivity(), 1);
		String result_hot = dbTools.readJson(getActivity(), 2);
		if (!result_hand.equals("") && !result_hot.equals("")) {
			dealJsonHeadData(result_hand);
			dealJsonHotData(result_hot);
			return;
		}
		// 网上下载数据
		if (isNetworkAble()) {
			getDataFromServer();
		}
	}

	// 判断网络是否连接是否可用
	private boolean isNetworkAble() {
		ConnectivityManager manager = (ConnectivityManager) getActivity()
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		if (manager != null) {
			NetworkInfo info = manager.getActiveNetworkInfo();
			if (info != null && info.isAvailable()) {
				return true;
			}
		}
		return false;
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值