天天看點

Android SQLite操作封裝

這是一個封裝了對SQLite基本操作的類。

DBHelper類:

public class DBHelper {

    public static  SQLiteDatabase openOrCreateDatabase(Context context,String dbName){//建立資料庫
        SQLiteDatabase db = context.openOrCreateDatabase(dbName,Context.MODE_PRIVATE,null);
        return db;
    }

    public static void createTable(SQLiteDatabase db,String tableName,List<Map<String,String>> list) {//建立資料表
            String str = "";
            for (int i = ; i < list.size(); i++) {
                Map<String, String> map = list.get(i);
                str += map.get("DbFieldName") + " ";
                if(i == list.size() -){
                    str += map.get("DbFieldTyple");
                }else {
                    str += map.get("DbFieldTyple") + ",";
                }

                //DbFieldName表示字段名的key,DbFieldTyple表示字段類型的key
            }
            db.execSQL("CREATE TABLE " + tableName + " (" + str + ")");
    }

    public static void executeSQL(SQLiteDatabase db,String sqlStr){//輸入SQL指令操作資料庫
        db.execSQL(sqlStr);
    }

    public static void insertDatas(SQLiteDatabase db,String tableName,List<Map<String,String>> list){//向資料庫中插入資料
        ContentValues contentValues = new ContentValues();
        for(int i = ; i < list.size(); i++){
            Map<String,String> map = list.get(i);
            contentValues.put(map.get("DbFieldName"),map.get("DbFieldNote"));
        }
        //DbFieldName表示字段名的key,DbFieldNote表示字段内容的key
        db.insert(tableName, null, contentValues);
    }

    public static void deleteDatas(SQLiteDatabase db,String tableName,String whereClause,String[] whereArgs){//删除指定資料
        db.delete(tableName, whereClause, whereArgs);
    }

    public static void updateDatas(SQLiteDatabase db,String tableName,List<Map<String,String>>list,String whereClause, String[] whereArgs){//更新資料
        ContentValues contentValues = new ContentValues();
        for(int i = ; i < list.size(); i++){
            Map<String,String> map = list.get(i);
            contentValues.put(map.get("DbFieldName"),map.get("DbFieldNote"));
            //DbFieldName表示字段名的key,DbFieldNote表示字段内容的key
        }
        db.update(tableName, contentValues, whereClause, whereArgs);
    }

    public static Cursor getCursorByQuery(SQLiteDatabase db,String tableName){//傳回整張表的資料集合
        Cursor cursor = db.query(tableName,null,null,null,null,null,null);
        return cursor;
    }

    public static Cursor getCursorByRawQuery(SQLiteDatabase db,String sqlStr,String [] array){//傳回指定條件的資料集合
        Cursor cursor = db.rawQuery(sqlStr, array);
        return cursor;
    }
    public static boolean tableIsExist(SQLiteDatabase db,String tableName){//判斷表是否已經存在
        boolean result = false;
        if(tableName == null){
            return false;
        }
        Cursor cursor = null;
        try {
            String sql = "select count(*) as c from Sqlite_master  where type ='table' and name ='"+tableName.trim()+"' ";
            cursor = db.rawQuery(sql, null);
            if(cursor.moveToNext()){
                int count = cursor.getInt();
                if(count>){
                    result = true;
                }
            }

        } catch (Exception e) {
        }
        return result;
    }
}