package cn.koolcloud.ipos.appstore.cache.database; import java.util.ArrayList; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteMisuseException; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class BaseSqlAdapter { protected SQLiteOpenHelper mDbHelper; public SQLiteDatabase mDb; public SQLiteDatabase getmDb() { return mDb; } public void setmDb(SQLiteDatabase mDb) { this.mDb = mDb; } /** * @Title: excuteSql * @Description: execute sql * @param @param sql * @param @return * @return boolean * @throws */ public boolean excuteSql(String sql) { SQLiteDatabase db = getReadable(); try { db.execSQL(sql); db.close(); db = null; } catch (Exception e) { e.printStackTrace(); return false; } finally { if (db != null) { db.close(); db = null; } } return true; } public boolean excuteWriteAbleSql(String sql) { SQLiteDatabase db = getWrittable(); try { db.execSQL(sql); db.close(); db = null; } catch (Exception e) { e.printStackTrace(); return false; } finally { if (db != null) { db.close(); db = null; } } return true; } /** exec sql */ public boolean excuteSql(String sql, String[] pr) { SQLiteDatabase db = getReadable(); try { db.execSQL(sql, pr); db.close(); db = null; } catch (Exception e) { e.printStackTrace(); return false; } finally { if (db != null) { db.close(); db = null; } } return true; } public boolean insertSql(String tableName, ContentValues cv) { boolean result = false; SQLiteDatabase db = getWrittable(); try { db.beginTransaction(); db.insert(tableName, null, cv); db.setTransactionSuccessful(); result = true; } catch (Exception e) { e.printStackTrace(); } finally { db.endTransaction(); if (db != null) { db.close(); db = null; } } return result; } /** exec sql */ public boolean excuteSql(ArrayList<SQLEntity> sqlList) { SQLiteDatabase db = getWrittable(); try { db.beginTransaction(); for (SQLEntity entity : sqlList) { if (null == entity.getParams()) db.execSQL(entity.getSql()); else db.execSQL(entity.getSql(), entity.getParams()); } db.setTransactionSuccessful(); } catch (Exception e) { e.printStackTrace(); return false; } finally { if (db.isOpen()) { db.endTransaction(); } if (db != null) { db.close(); db = null; } } return true; } /** * get cursor * */ public Cursor getCursor(String rawQuery, String[] args) { getReadable(); Cursor cursor = null; try { cursor = mDb.rawQuery(rawQuery, null); } catch (SQLiteMisuseException e) { e.printStackTrace(); } return cursor; } SQLiteDatabase getReadable() { if (mDb == null || !mDb.isOpen()) mDb = mDbHelper.getReadableDatabase(); return mDb; } SQLiteDatabase getWrittable() { if (mDb == null || !mDb.isOpen()) mDb = mDbHelper.getWritableDatabase(); return mDb; } public SQLiteDatabase getDb() throws Exception { SQLiteDatabase db; try { db = mDbHelper.getWritableDatabase(); } catch (Exception e) { e.printStackTrace(); db = mDbHelper.getReadableDatabase(); } return db; } /** * close database * */ public void closeDB() { if (mDb != null && mDb.isOpen()) mDb.close(); mDb = null; } public void closeHelp() { if (mDbHelper != null) mDbHelper.close(); } /** * excuteSql entity bean */ public class SQLEntity { private String sql; private String[] params; public SQLEntity(String sql, String[] params) { super(); this.sql = sql; this.params = params; } public String getSql() { return sql; } public void setSql(String sql) { this.sql = sql; } public String[] getParams() { return params; } public void setParams(String[] params) { this.params = params; } } }