package android.source.tuangou.framework.store;
import java.lang.reflect.Array;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.source.tuangou.framework.Application;
import android.source.tuangou.framework.file.FileHelper;
import android.source.tuangou.framework.util.LogUtil;
/*
* 数据库类
* */
public class Database
{
/*
* 数据库打开帮助类
* */
class DatabaseOpenHelper extends SQLiteOpenHelper{
final Database this$0;
public void onCreate(SQLiteDatabase sqlitedatabase){
}
public void onUpgrade(SQLiteDatabase sqlitedatabase, int i, int j){
if (j > i){
StringBuilder stringbuilder = (new StringBuilder()).append("Database path: ");
String s = sqlitedatabase.getPath();
LogUtil.d(stringbuilder.append(s).toString());
boolean flag = FileHelper.delete(sqlitedatabase.getPath());
}
}
DatabaseOpenHelper(Context context, String s,
android.database.sqlite.SQLiteDatabase.CursorFactory cursorfactory,
int i){
super(context, s, cursorfactory, i);
this$0 = Database.this;
}
}
private SQLiteDatabase db;
private DatabaseOpenHelper dbOpenHelper;
private String name;
//构造函数,创建数据库
public Database(Context context, String s){
//获取版本值
int i = Application.getInstance().getVersionCode();
Database database = this;
Context context1 = context;
//创建数据库帮助类对象
dbOpenHelper = database. new
DatabaseOpenHelper(context1, s, null, i);
//获取写数据库的对象
db = dbOpenHelper.getWritableDatabase();
//数据库名称
name = s;
}
//创建数据库函数
public Database(String s){
this(((Context) (Application.getInstance())), s);
}
/**
* @deprecated Method execSql is deprecated
*/
//执行相应sql
public boolean execSql(String s){
boolean flag = false;
try {
db.execSQL(s);
flag = true;
} catch (SQLException sqlE) {
String s1 = (new StringBuilder()).append("Failed to exec sql: ").append(s).toString();
LogUtil.e(sqlE, s1);
// TODO: handle exception
}catch(Exception e){
e.printStackTrace();
}
return flag;
}
/**
* @deprecated Method execSql is deprecated
*/
public boolean execSql(String s, Object aobj[]){
boolean flag = false;
try {
db.execSQL(s, aobj);
flag = true;
} catch (SQLException sqlE) {
String s1 = (new StringBuilder()).append("Failed to exec sql: ").append(s).toString();
LogUtil.e(sqlE, s1);
return false;
// TODO: handle exception
}catch(Exception e){
e.printStackTrace();
return false;
}
return flag;
}
//获取数据库函数
public SQLiteDatabase getDb(){
return db;
}
//从数据库中获取单个值
public String getSingleString(String sql, String selectionArgs[]){
Object obj = getSingleValue(sql, selectionArgs);
String s1;
if (obj != null)
s1 = obj.toString();
else
s1 = "";
return s1;
}
//从数据库中获取单个值
public Object getSingleValue(String sql, String selectionArgs[]){
Object aobj[][] = query(sql, selectionArgs);
Object obj = null;
if (aobj.length > 0 && aobj[0].length > 0)
obj = aobj[0][0];
return obj;
}
/**
* @deprecated Method query is deprecated
*/
public Object[][] query(String s){
Object aobj1[][];
try {
Object aobj[][];
String as[] = new String[0];
aobj = query(s, as);
aobj1 = aobj;
} catch (Exception e) {
e.printStackTrace();
return null;
// TODO: handle exception
}
return aobj1;
}
/**
* @deprecated Method query is deprecated
*/
/*
* 数据库查询
*
* */
public Object[][] query(String sql, String selectionArgs[]){
//保存查询结果
Cursor cursor;
Object aobj[][] = null;
try {
int i = 0;
cursor = null;
if (selectionArgs == null) {
selectionArgs = new String[i];
}
/*
* rawQuery()方法用于执行select语句
* 参数1--select语句
* 参数2--select语句中占位符参数的值
*
* */
cursor = db.rawQuery(sql, selectionArgs);
if (cursor == null) {
return aobj;
}
int j;
j = cursor.getColumnCount();
int k = cursor.getCount();
int ai[] = { k, j };
Class<?> classType = Class.forName("java.lang.Object");
aobj = (Object[][]) Array.newInstance(classType, ai);
int l = 0;
int i1 = 0;
while(cursor.moveToNext()){
i1 = 0;
for(; i1 < j; i1++){
String s1 = cursor.getString(i1);
aobj[l][i1] = s1;
}
l++;
}
cursor.close();
} catch (Exception e) {
String s2 = (new StringBuilder()).append("Failed to query sql: ").append(sql).toString();
LogUtil.e(e, s2);
// TODO: handle exception
}
return aobj;
}
}