Android数据库

来源:互联网 发布:js密码和确认密码校验 编辑:程序博客网 时间:2024/05/14 15:51
importandroid.content.ContentValues;
importandroid.content.Context;
importandroid.database.Cursor;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.database.sqlite.SQLiteOpenHelper;
importandroid.os.Handler;
importandroid.os.Message;
 
/**
 * 缓存数据库
 * @author lu
 *
 */
publicclass CacheHelper extendsSQLiteOpenHelper {
 
    privatestatic final String tableName = "JSONCACHE";
    privatestatic final String URL = "URL";
    privatestatic final String JSON = "JSON";
    privatestatic final String DATE = "DATE";
 
    publicCacheHelper(Context context) {
        super(context,"cache.db",null,1);
    }
 
    @Override
    publicvoid 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
    publicvoid onUpgrade(SQLiteDatabase db, intoldVersion, intnewVersion) {
    }
     
    privatestatic CacheHelper helper = null;
    publicstatic CacheHelper init(Context context){
        if(helper==null) {
            helper = newCacheHelper(context);
        }
        returnhelper;
    }
     
    /**储存缓存json*/
    publicvoid setJson(finalString url0,finalString json){
        newThread(){
            publicvoid run() {
                String url = urlEncode(url0);
                ContentValues cv = newContentValues();
                cv.put(URL, url);
                cv.put(JSON, json);
                cv.put(DATE, System.currentTimeMillis());
                helper.getReadableDatabase().delete(tableName, URL+"=?",newString[]{url});
                helper.getReadableDatabase().insert(tableName,null, cv);
            }
        }.start();
    }
     
    /**获取缓存json,以handler的obj返回(懒得写监听器了)*/
    publicvoid getJson(finalString url0,finalHandler handler){
        newThread(){
            publicvoid run() {
                String url = urlEncode(url0);
                String result = null;
                Cursor c =
                helper.getReadableDatabase().query(tableName,
                        null,
                        URL+"=?",
                        newString[]{url},
                        null,
                        null,
                        null);
                if(c.moveToNext()) {
                    result = c.getString(c.getColumnIndex(JSON));
                }
                Message msg = Message.obtain();
                msg.obj = result;
                handler.sendMessage(msg);
            }
        }.start();
    }
     
    /**缓存需要定时清空*/
    publicvoid clear(){
        newThread(){
            publicvoid run() {
                helper.getReadableDatabase().delete(tableName,"ID>?",newString[]{"0"});
            }
        }.start();
    }
     
    /**url需要去掉token*/
    privateString urlEncode(String url){
        String result = url.replaceAll("accessToken.*?\\&","");
        if(result.contains("accessToken")) {//如果还没去掉,说明是在尾部
            result = result.replaceAll("\\&accessToken.*?$","");
        }
        returnresult;
    }
 
}
0 0
原创粉丝点击