package com.tencent.onesecurity.safebox.dao; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; import com.tencent.onesecurity.MainApplication; import com.tencent.onesecurity.update.UpdateInterface; import com.tencent.onesecurity.update.UpdateManager; public class SafeBoxDBHelper implements UpdateInterface{ private static final String DB_NAME = "one-security-safebox.db"; /** DB 版本号 */ private static final int DB_VERSION = 2; private int oldVersion; private static SafeBoxDBHelper mInstance = null; private SQLiteOpenHelper mDatabase; private static String PREFIX_CREATE_TB = "CREATE TABLE IF NOT EXISTS "; public static String TB_NOTE = "note"; private static String CREATE_TB_NOTE = PREFIX_CREATE_TB + TB_NOTE + "(" + DaoConstant.COL_NT_ID + " INTEGER PRIMARY KEY, " + DaoConstant.COL_NT_TITLE + " BLOB, " + DaoConstant.COL_NT_CONTENT + " BLOB, " + DaoConstant.COL_NT_CREATE_TIME + " INTEGER, " + DaoConstant.COL_NT_UPDATE_TIME + " INTEGER)"; public synchronized static SafeBoxDBHelper getInstance() { if (mInstance == null) { if (mInstance == null) { mInstance = new SafeBoxDBHelper(); } } return mInstance; } public void createDB(){ mDatabase = new SQLiteOpenHelper(MainApplication.getContext(), DB_NAME, null, DB_VERSION){ /** * 数据库初次创建 */ @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TB_NOTE); Log.i("SafeBoxDBHelper", "mDatabase onCreate"); } /** * 数据库更新回调 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { SafeBoxDBHelper.this.oldVersion = oldVersion; Log.i("SafeBoxDBHelper", "mDatabase - onUpgrade : " + oldVersion); } }; Log.i("SafeBoxDBHelper", "mDatabase onCreate over"); // 不使用线程锁 mDatabase.getWritableDatabase().setLockingEnabled(false); } @Override public boolean isNeedUpdate() { Log.i("DBversion", "SafeBoxDBHelper oldVersion : " + oldVersion); if(this.oldVersion == 1){ return true; } return false; } @Override public int updateCount() { String sql = "select count(" + DaoConstant.COL_NT_ID + ") from " + TB_NOTE; Cursor cur = this.query(sql); int count = 0; if(cur!=null){ try { cur.moveToFirst(); count = cur.getInt(0); Log.i("SafeBoxDBHelper", "count : " + count); } catch (Exception e) { Log.e("SafeBoxDBHelper", "updateCount Exception :" + e.toString()); }finally { cur.close(); } } return count; } @Override public void update(UpdateManager.UpdateRefresh updateRefresh) { int count = this.updateCount(); for(int i=0;i<count;i++){ try { Thread.sleep(20); } catch (InterruptedException e) { } updateRefresh.sendRefreshCommend(); } } /** * 有返回结果查询 * * @param queryStr * SQL语句 * @return 当前游标 */ protected Cursor query(String queryStr) { Cursor cur = null; try { cur = mDatabase.getWritableDatabase().rawQuery(queryStr, null); } catch (Exception e) { Log.e("SafeBoxDBHelper", "query Exception" + e.toString()); } return cur; } }