package com.tencent.onesecurity.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 DBHelper implements UpdateInterface{
/** 实例 */
private static DBHelper mInstance = null;
private static final String DB_NAME = "one-security.db";
/** Feature上报表 */
private final String CREATE_SCRIPT_T_FEATUR_EREPORT = "CREATE TABLE IF NOT EXISTS "
+ FeatureReportDao.TB_FEATURE + " ( "
+ FeatureReportDao.COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
+ FeatureReportDao.COLUMN_FEATURE_ID + " INTEGER, "
+ FeatureReportDao.COLUMN_FEATURE_COUNT + " INTEGER, "
+ FeatureReportDao.COLUMN_FEATURE_DATE + " INTEGER)"
;
private static final int DB_VERSION = 2;
private int oldVersion;
private SQLiteOpenHelper mDatabase;
private DBHelper(){
}
public static DBHelper getInstance(){
if(mInstance == null) {
synchronized (DBHelper.class) {
if(mInstance == null) {
mInstance = new DBHelper();
}
}
}
return mInstance;
}
/**
* 创建数据库
* @param db
*/
private void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_SCRIPT_T_FEATUR_EREPORT);
}
public void createDB(){
mDatabase = new SQLiteOpenHelper(MainApplication.getContext(), DB_NAME, null, DB_VERSION){
/**
* 数据库初次创建
*/
@Override
public void onCreate(SQLiteDatabase db) {
DBHelper.this.onCreate(db);
Log.i("OneSecurityDB", "DBHelper mDatabase onCreate");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
DBHelper.this.oldVersion = oldVersion;
Log.i("OneSecurityDB", "DBHelper mDatabase onUpgrade : " + oldVersion);
}
};
mDatabase.getWritableDatabase().setLockingEnabled(false);
}
@Override
public boolean isNeedUpdate() {
Log.i("DBversion", "DBHelper oldVersion : " + oldVersion);
if(DBHelper.this.oldVersion == 1){
return true;
}
return false;
}
@Override
public int updateCount() {
String sql = "select count(" + FeatureReportDao.COLUMN_ID + ") from " + FeatureReportDao.TB_FEATURE;
Cursor cur = this.query(sql);
int count = 0;
if(cur!=null){
try {
cur.moveToFirst();
count = cur.getInt(0);
Log.i("DBHelper", "count : " + count);
} catch (Exception e) {
Log.e("DBHelper", "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(50);
} 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("DBHelper", "query Exception" + e.toString());
}
return cur;
}
}