Android数据库
来源:互联网 发布:js密码和确认密码校验 编辑:程序博客网 时间:2024/05/14 15:51
importandroid.content.ContentValues;
import
android.content.Context;
import
android.database.Cursor;
import
android.database.sqlite.SQLiteDatabase;
import
android.database.sqlite.SQLiteOpenHelper;
import
android.os.Handler;
import
android.os.Message;
/**
* 缓存数据库
* @author lu
*
*/
public
class
CacheHelper
extends
SQLiteOpenHelper {
private
static
final
String tableName =
"JSONCACHE"
;
private
static
final
String URL =
"URL"
;
private
static
final
String JSON =
"JSON"
;
private
static
final
String DATE =
"DATE"
;
public
CacheHelper(Context context) {
super
(context,
"cache.db"
,
null
,
1
);
}
@Override
public
void
onCreate(SQLiteDatabase db) {
//建表jsoncache,字段:请求地址url、缓存数据json、时间date
db.execSQL(
"CREATE TABLE "
+tableName+
" (ID INTEGER PRIMARY KEY AUTOINCREMENT, "
+URL+
" TEXT NOT NULL, "
+JSON+
" TEXT NOT NULL, "
+DATE+
" INTEGER NOT NULL )"
);
}
@Override
public
void
onUpgrade(SQLiteDatabase db,
int
oldVersion,
int
newVersion) {
}
private
static
CacheHelper helper =
null
;
public
static
CacheHelper init(Context context){
if
(helper==
null
) {
helper =
new
CacheHelper(context);
}
return
helper;
}
/**储存缓存json*/
public
void
setJson(
final
String url0,
final
String json){
new
Thread(){
public
void
run() {
String url = urlEncode(url0);
ContentValues cv =
new
ContentValues();
cv.put(URL, url);
cv.put(JSON, json);
cv.put(DATE, System.currentTimeMillis());
helper.getReadableDatabase().delete(tableName, URL+
"=?"
,
new
String[]{url});
helper.getReadableDatabase().insert(tableName,
null
, cv);
}
}.start();
}
/**获取缓存json,以handler的obj返回(懒得写监听器了)*/
public
void
getJson(
final
String url0,
final
Handler handler){
new
Thread(){
public
void
run() {
String url = urlEncode(url0);
String result =
null
;
Cursor c =
helper.getReadableDatabase().query(tableName,
null
,
URL+
"=?"
,
new
String[]{url},
null
,
null
,
null
);
if
(c.moveToNext()) {
result = c.getString(c.getColumnIndex(JSON));
}
Message msg = Message.obtain();
msg.obj = result;
handler.sendMessage(msg);
}
}.start();
}
/**缓存需要定时清空*/
public
void
clear(){
new
Thread(){
public
void
run() {
helper.getReadableDatabase().delete(tableName,
"ID>?"
,
new
String[]{
"0"
});
}
}.start();
}
/**url需要去掉token*/
private
String urlEncode(String url){
String result = url.replaceAll(
"accessToken.*?\\&"
,
""
);
if
(result.contains(
"accessToken"
)) {
//如果还没去掉,说明是在尾部
result = result.replaceAll(
"\\&accessToken.*?$"
,
""
);
}
return
result;
}
}
0 0
- Android数据库 SQLite数据库
- android-数据库
- android 数据库
- android数据库
- Android 数据库
- android数据库
- android 数据库
- Android数据库
- Android 数据库
- android数据库
- Android 数据库
- android数据库
- android数据库
- Android 数据库
- Android数据库
- android数据库
- android数据库
- Android 数据库
- 合入mpls的情况-netlink失灵了
- 使用ruby解析纯真IP库(qqwry.dat)
- 在dwz系统框架下添加的简单网站便签
- ASI和AFN简单对比
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android数据库
- 基于容器云的微服务架构实践
- SqlServer查询所有数据表
- JNDI and EJB
- 配置Play开发环境以及创建Demo
- 要素先闪烁后缩放的问题
- 背包问题和0-1背包问题
- 神奇的android:clipChildren属性
- Android 启动过程的简述