/**
* Copyright (C) 2013-2014 EaseMob Technologies. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.hx.hxchat.db;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import com.mgw.member.manager.BaseApplication;
public class DbOpenHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 9;
private static DbOpenHelper instance;
// private static final String USERNAME_TABLE_CREATE = "CREATE TABLE "
// + UserDao.TABLE_NAME + " (" + UserDao.COLUMN_NAME_NICK + " TEXT, "
// + UserDao.COLUMN_NAME_ID + " TEXT, " + UserDao.COLUMN_NAME_PHOTO
// + " TEXT PRIMARY KEY);";
// private static final String USERNAME_TABLE_CREATE = "CREATE TABLE "
// + UserDao.TABLE_NAME + " (" + UserDao.COLUMN_NAME_ID + " TEXT, "
// + UserDao.COLUMN_NAME_NICK + " TEXT, " + UserDao.COLUMN_NAME_PHOTO
// + " TEXT, " + UserDao.COLUMN_NAME_REFEREE + " TEXT PRIMARY KEY);";
// /**
// * 用户表创建
// */
// private static final String USERNAME_TABLE_CREATE = "CREATE TABLE " + UserDao.TABLE_NAME + " (" + UserDao.COLUMN_NAME_ID + " TEXT, " + UserDao.COLUMN_NAME_NICK + " TEXT, "
// + UserDao.COLUMN_NAME_PHOTO + " TEXT, " + UserDao.COLUMN_NAME_REFEREE + " TEXT);";
/**
* 用户表创建v2
*/
private static final String USERNAME_TABLE_CREATE = "CREATE TABLE " + UserDao.TABLE_NAME + " (" + UserDao.COLUMN_NAME_ID + " TEXT, " + UserDao.COLUMN_NAME_NICK + " TEXT, "
+ UserDao.COLUMN_NAME_PHOTO + " TEXT, "+UserDao.COLUMN_NAME_REFEREE + " TEXT, " + UserDao.COLUMN_NAME_COMMENT + " TEXT);";
/**
* 邀请消息表创建
*/
private static final String INIVTE_MESSAGE_TABLE_CREATE = "CREATE TABLE " + InviteMessgeDao.TABLE_NAME + " (" + InviteMessgeDao.COLUMN_NAME_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ InviteMessgeDao.COLUMN_NAME_FROM + " TEXT, " + InviteMessgeDao.COLUMN_NAME_GROUP_ID + " TEXT, " + InviteMessgeDao.COLUMN_NAME_GROUP_Name + " TEXT, " + InviteMessgeDao.COLUMN_NAME_REASON
+ " TEXT, " + InviteMessgeDao.COLUMN_NAME_STATUS + " INTEGER, " + InviteMessgeDao.COLUMN_NAME_ISINVITEFROMME + " INTEGER, " + InviteMessgeDao.COLUMN_NAME_TIME + " TEXT); ";
// /**
// * 临时联系人表
// */
// private static final String LINKER_TABLE_CREATE =
// "CREATE TABLE "+ LinkerDao.TABLE_NAME +
// " ("
// + LinkerDao.COLUMN_NAME_ID + " TEXT,"
// + LinkerDao.COLUMN_NAME_UserID + " TEXT, "
// + LinkerDao.COLUMN_NAME_NICK + " TEXT, "
// + LinkerDao.COLUMN_NAME_PHOTO + " TEXT); ";
//
//
/**
* 临时联系人表v2
*/
private static final String LINKER_TABLE_CREATE = "CREATE TABLE " + LinkerDao.TABLE_NAME + " (" + LinkerDao.COLUMN_NAME_ID + " TEXT," + LinkerDao.COLUMN_NAME_UserID + " TEXT, "
+ LinkerDao.COLUMN_NAME_NICK + " TEXT, " + LinkerDao.COLUMN_NAME_PHOTO + " TEXT, " + LinkerDao.COLUMN_LINKER_USER + " TEXT); ";
/**
* 消息置顶置顶表
*/
private static final String TOPUSER_TABLE_CREATE = "CREATE TABLE " + TopUserDao.TABLE_NAME + " (" + TopUserDao.COLUMN_NAME_TIME + " TEXT, " + TopUserDao.COLUMN_NAME_IS_GOUP + " TEXT, "
+ TopUserDao.COLUMN_NAME_ID + " TEXT PRIMARY KEY);";
/**
* 消息置顶置顶表
*/
private static final String GROUPSICON_TABLE_CREATE = "CREATE TABLE " + GroupsDao.TABLE_NAME + " (" + GroupsDao.COLUMN_NAME_TIME + " TEXT, " + GroupsDao.COLUMN_NAME_ICON + " TEXT, "+ GroupsDao.COLUMN_NAME_GROUP + " TEXT, "
+ GroupsDao.COLUMN_NAME_ID + " TEXT PRIMARY KEY);";
private DbOpenHelper(Context context) {
super(context, getUserDatabaseName(), null, DATABASE_VERSION);
}
/**
* 检查是否含有表
*
* @param db
* @param tabName
* @return Created by Administrator
*/
public static 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
}
return result;
}
/**
* 判断数据库中指定表的指定字段是否存在
*
* @param db
* @param strTableName
* 指定表名称
* @param strFieldName
* 执行字段名称
* @return
*/
public static boolean isExistField(SQLiteDatabase db, String strTableName, String strFieldName) {
StringBuilder builder = new StringBuilder();
builder.append("name = '").append(strTableName).append("' AND sql LIKE '%").append(strFieldName).append("%'");
Cursor cursor = null;
try {
cursor = db.query("sqlite_master", null, builder.toString(), null, null, null, null);
return cursor.getCount() > 0;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (cursor != null) {
cursor.close();
}
}
return false;
}
public static DbOpenHelper getInstance(Context context) {
if (instance == null) {
instance = new DbOpenHelper(context.getApplicationContext());
}
return instance;
}
/**
* 获得用户数据库表的名字
*
* @return Created by Administrator
*/
public static String getUserDatabaseName() {
return BaseApplication.getApplication().getUserName() + "_demo.db";
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(USERNAME_TABLE_CREATE);
db.execSQL(INIVTE_MESSAGE_TABLE_CREATE);
db.execSQL(LINKER_TABLE_CREATE);
db.execSQL(TOPUSER_TABLE_CREATE);
db.execSQL(GROUPSICON_TABLE_CREATE);
}
/**
* 数据库更新
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
/**
* 1、第一次创建数据库的时候,这个方法不会走 2、清除数据后再次运行(相当于第一次创建)这个方法不会走
* 3、数据库已经存在,而且版本升高的时候,这个方法才会调用
*/
switch (newVersion) {
case 6:
Log.i("mayer", "#############数据库升级了##############:" + newVersion);
db.execSQL(TOPUSER_TABLE_CREATE);
db.execSQL("ALTER TABLE " + LinkerDao.TABLE_NAME + " ADD " + LinkerDao.COLUMN_LINKER_USER + " TEXT"); // 往表中增加一列
break;
case 7:
db.execSQL("ALTER TABLE " + UserDao.TABLE_NAME + " ADD " + UserDao.COLUMN_NAME_COMMENT+ " TEXT"); // 往表中增加一列
break;
case 9:
db.execSQL(GROUPSICON_TABLE_CREATE);
break;
}
}
public void closeDB() {
if (instance != null) {
try {
SQLiteDatabase db = instance.getWritableDatabase();
db.close();
} catch (Exception e) {
e.printStackTrace();
}
instance = null;
}
}
}