package edu.hebtu.movingcampus.db;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
public class DBHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "movingcampus";
private static final int DB_VERSION = 2;
private SQLiteDatabase db;
private static DBHelper mdbHelper;
public static DBHelper getInstance(Context context) {
if (mdbHelper == null) {
mdbHelper = new DBHelper(context);
}
return mdbHelper;
}
private DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
private DBHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
this.db = db;
operateTable(db, "");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion == newVersion) {
return;
}
operateTable(db, "DROP TABLE IF EXISTS ");
onCreate(db);
}
public void operateTable(SQLiteDatabase db, String actionString) {
Class<DatabaseColumn>[] columnsClasses = DatabaseColumn.getSubClasses();
DatabaseColumn columns = null;
for (int i = 0; i < columnsClasses.length; i++) {
try {
columns = columnsClasses[i].newInstance();
if ("".equals(actionString) || actionString == null) {
db.execSQL(columns.getTableCreateor());
} else {
db.execSQL(actionString + columns.getTableName());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public long insert(String Table_Name, ContentValues values) {
if (db == null)
db = getWritableDatabase();
return db.insert(Table_Name, null, values);
}
/**
*
* @param Table_Name
* @param id
* @return 影响行数
*/
public int delete(String Table_Name, int id) {
if (db == null)
db = getWritableDatabase();
return db.delete(Table_Name, BaseColumns._ID + "=?",
new String[] { String.valueOf(id) });
}
/**
* @param Table_Name
* @param values
* @param WhereClause
* @param whereArgs
* @return 影响行数
*/
public int update(String Table_Name, ContentValues values,
String WhereClause, String[] whereArgs) {
if (db == null) {
db = getWritableDatabase();
}
return db.update(Table_Name, values, WhereClause, whereArgs);
}
public Cursor query(String Table_Name, String[] columns, String whereStr,
String[] whereArgs) {
if (db == null) {
db = getReadableDatabase();
}
return db.query(Table_Name, columns, whereStr, whereArgs, null, null,
null);
}
public Cursor rawQuery(String sql, String[] args) {
if (db == null) {
db = getReadableDatabase();
}
Cursor c = db.rawQuery(sql, args);
if (c.getCount() <= 0) {
c.close();
c = null;
}
return c;
}
public void ExecSQL(String sql) {
if (db == null) {
db = getWritableDatabase();
}
db.execSQL(sql);
}
public void closeDb() {
if (db != null) {
db.close();
db = null;
}
}
}