package com.hupu.games.db; import com.hupu.games.common.SharedPreferencesMgr; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class HuPuDBHelp extends SQLiteOpenHelper { public static final String DB_NAME = "hupu.db"; public static final String TABLE_VERSION = "t_version"; public static final String TABLE_TEAM_FOLLOW = "team_follow"; public static final String TABLE_GAME_FOLLOW = "game_follow"; public static final String TABLE_FOLLOW_TASK = "follow_task"; public static final String TABLE_LEAGUE = "t_league"; public static final String TABLE_LEAGUE02 = "t_league02"; public static final String TABLE_TEAM = "t_team"; public static final String TABLE_READ_NEWS = "read_news"; public static final String TABLE_DISCOVERY = "t_discovery"; public static final String KEY_TEAM_ID = "tId"; public static final String KEY_PRIMARY_ID = "primaryId"; public static final String KEY_TEAM_NAME = "tName"; /** 比赛id */ public static final String KEY_GAME_ID = "gId"; /** 比赛开始时间 */ public static final String KEY_GAME_START_TIME = "gTime"; public static final String KEY_ID = "_ID"; /** 0比赛,1球队 */ public static final String KEY_TYPE = "_type"; /** 0关注,1取消 */ public static final String KEY_IS_FOLLOW = "isFollow"; public static final String KEY_IS_FIRST = "isFist"; public static final String KEY_LID = "lid"; public static final String KEY_EN_NAME = "eName"; public static final String KEY_NAME = "name"; public static final String KEY_LOGO = "logo"; public static final String KEY_TEMPLATE = "showTemplate"; public static final String KEY_DEFAULT_TAB = "showDefaultTab"; public static final String KEY_DEL_TAB = "delTab"; public static final String KEY_COLOR = "color"; public static final String KEY_GAME_TYPY = "game_type"; public static final String KEY_SHOW_NEW = "show_new"; public static final String KEY_NEWS_ID = "nid"; public static final String KEY_IS_READ = "is_read"; public static final String KEY_BLOCK = "_block"; public static final String KEY_SHOW_STANDINGS_TYPE = "show_standings_type"; private static final String CREATE_TEAM_FOLLOW = "create table " + TABLE_TEAM_FOLLOW + " ( " + KEY_TEAM_ID + " INTEGER, " + KEY_TEAM_NAME + " VARCHAR(25), " + "PRIMARY KEY(" + KEY_TEAM_ID + "));"; private static final String CREATE_GAME_FOLLOW = "create table " + TABLE_GAME_FOLLOW + " ( " + KEY_GAME_ID + " INTEGER, " + KEY_GAME_START_TIME + " integer, " + "PRIMARY KEY(" + KEY_GAME_ID + "));"; private static final String CREATE_FOLLOW_TASK = "create table " + TABLE_FOLLOW_TASK + " ( " + KEY_ID + " INTEGER, " + KEY_TYPE + " integer, " + KEY_IS_FOLLOW + " integer, " + "PRIMARY KEY(" + KEY_ID + "));"; private static final String CREATE_VERSION = "create table " + TABLE_VERSION + " ( " + KEY_IS_FIRST + " integer" + ");"; private static final String CREATE_lEAGUE = "create table " + TABLE_LEAGUE + " ( " + KEY_LID + " INTEGER, " + KEY_EN_NAME + " VARCHAR(25), " + KEY_NAME + " VARCHAR(25), " + KEY_LOGO + " TEXT," + KEY_IS_FOLLOW + " INTEGER, " + KEY_TEMPLATE + " VARCHAR(25), " + KEY_DEL_TAB + " VARCHAR(25), " + KEY_PRIMARY_ID + " VARCHAR(25), " + "PRIMARY KEY(" + KEY_PRIMARY_ID + "));"; private static final String CREATE_lEAGUE02 = "create table " + TABLE_LEAGUE02 + " ( " + KEY_LID + " INTEGER, " + KEY_EN_NAME + " VARCHAR(25), " + KEY_NAME + " VARCHAR(25), " + KEY_LOGO + " TEXT," + KEY_IS_FOLLOW + " INTEGER, " + KEY_TEMPLATE + " VARCHAR(25), " + KEY_DEL_TAB + " VARCHAR(25), " + KEY_GAME_TYPY + " VARCHAR(25), " + KEY_SHOW_NEW + " INTEGER, " + KEY_PRIMARY_ID + " VARCHAR(25), " + KEY_SHOW_STANDINGS_TYPE + " VARCHAR(16), " + "PRIMARY KEY(" + KEY_PRIMARY_ID + "));"; private static final String CREATE_TEAM = "create table " + TABLE_TEAM + " ( " + KEY_PRIMARY_ID + " VARCHAR(25), " + KEY_TEAM_ID + " INTEGER," + KEY_LID + " INTEGER," + KEY_EN_NAME + " VARCHAR(25), " + KEY_NAME + " VARCHAR(25), " + KEY_LOGO + " TEXT," + KEY_COLOR + " VARCHAR(25), " + KEY_IS_FOLLOW + " INTEGER, " + "PRIMARY KEY(" + KEY_PRIMARY_ID + "));"; private static final String CREATE_READ_NEWS = "create table " + TABLE_READ_NEWS + " ( " + KEY_NEWS_ID + " INTEGER, " + KEY_IS_READ + " integer, " + "PRIMARY KEY(" + KEY_NEWS_ID + "));"; private static final String CREATE_DICOVERY = "create table " + TABLE_DISCOVERY + " ( " +KEY_ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+KEY_BLOCK+ " INTEGER, "+KEY_LID + " INTEGER," + KEY_EN_NAME + " VARCHAR(25), " + KEY_NAME + " VARCHAR(25), " + KEY_LOGO + " TEXT," + KEY_TEMPLATE + " VARCHAR(25), " + KEY_DEFAULT_TAB + " TEXT " + ");"; HuPuDBHelp(Context context, int version) { super(context, DB_NAME, null, version); } @Override public void onCreate(SQLiteDatabase db) { createTable(db, CREATE_TEAM_FOLLOW); createTable(db, CREATE_GAME_FOLLOW); createTable(db, CREATE_FOLLOW_TASK); // createTable( db,CREATE_VERSION); createTable(db, CREATE_lEAGUE); createTable(db, CREATE_TEAM); createTable(db, CREATE_lEAGUE02); createTable(db, CREATE_READ_NEWS); createTable(db, CREATE_DICOVERY); } private void createTable(SQLiteDatabase db, String name) { if (!tabIsExist(db, name)) try { db.execSQL(name); } catch (SQLException e) { e.printStackTrace(); } } private void updateLeagueTable(SQLiteDatabase db) { try { if (!tabIsExist(db, TABLE_LEAGUE02)) { db.execSQL(CREATE_lEAGUE02); } else { Log.d("LeagueTable", "insert"); db.execSQL("ALTER TABLE " + TABLE_LEAGUE02 + " ADD COLUMN " + KEY_SHOW_STANDINGS_TYPE + " VARCHAR(16)"); } if (!tabIsExist(db, TABLE_LEAGUE02)) { db.execSQL(CREATE_DICOVERY); } } catch (SQLException e) { e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { switch (newVersion) { case 3: case 4: createTable(db, CREATE_lEAGUE); createTable(db, CREATE_TEAM); break; case 6: createTable(db, CREATE_READ_NEWS); case 5: createTable(db, CREATE_TEAM); createTable(db, CREATE_lEAGUE02); break; case 8: createTable(db, CREATE_DICOVERY); case 7: createTable(db, CREATE_TEAM); updateLeagueTable(db); createTable(db, CREATE_READ_NEWS); break; } } /** * 判断某张表是否存在 * * @param tabName * 表名 * @return */ public boolean tabIsExist(String tabName) { boolean result = false; if (tabName == null) { return false; } SQLiteDatabase db = null; Cursor cursor = null; try { db = this.getReadableDatabase(); String sql = "select count(*) as c from sqlite_master where type ='table' and name ='" + tabName.trim() + "' "; cursor = db.rawQuery(sql, null); if (cursor.moveToNext()) { int count = cursor.getInt(0); if (count > 0) { result = true; } } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return result; } /** * 判断某张表是否存在 * * @param tabName * 表名 * @return */ public boolean tabIsExist(SQLiteDatabase db, String tabName) { boolean result = false; if (tabName == null) { return false; } Cursor cursor = null; try { String sql = "select count(*) as c from sqlite_master where type ='table' and name ='" + tabName.trim() + "' "; cursor = db.rawQuery(sql, null); if (cursor.moveToNext()) { int count = cursor.getInt(0); if (count > 0) { result = true; } } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return result; } }