packagecom.bwf.a10_sql_02.db;importandroid.content.ContentValues;importandroid.content.Context;importandroid.database.Cursor;importandroid.database.sqlite.SQLiteDatabase;/*** 使用该类来封装增删改查等数据库操作的方法,方便使用
*@authorfanhy
*@since2015-09-22
*@version1.0.0
**/
public classDBOPeration {
SQLiteDatabase sd;publicDBOPeration(Context context) {super();//得到DBHelper对象,通过它去打开数据库
DBHelper dbHelper = new DBHelper(context, "Stu.db", null, 1);//初始化SQLiteDatabase
/*** 两种方式打开数据库:
* 内存充裕时,两种方式打开数据库的效果是一样的,都是可以读写的
* 当内存较低没有可写空间时:
* getReadableDatabase:以可读形式打开
* getWritableDatabase:以可写方式打开失败并抛出异常
**/sd=dbHelper.getReadableDatabase();//sd = dbHelper.getWritableDatabase();
}/*** 插入一条数据
*@paramString name 学生姓名
*@paramint age 学生年龄
*
**/
public void insert(String name, intage){//首先定义出要执行的数据库语句//String insertStr = "INSERT INTO stu (name, age) values ("+name+","+age+")";//执行该SQL语句//sd.execSQL(insertStr);//内部通过一个HashMap来实现的
ContentValues values = newContentValues();
values.put("name", name);
values.put("age", age);/***@paramString table 表名
*@paramString nullColumnHack 缺省(ContentValues)指定哪一列值为NULL
*@paramContentValues values 要插入的数据封装到该容器中
**/sd.insert("stu", "name", values);
}/*** 删除所有数据
**/
public voiddeleteAll(){//定义数据库语句//String deleteAllStr = "delete from stu";//sd.execSQL(deleteAllStr);
/***@paramString table 表名
*@paramString whereClause 删除的条件,传null代表全部删除
*@paramString[] whereArgs 当删除条件都有不确定值时,在该参数中使用变量代替,不需要则传null
**/sd.delete("stu", null, null);
}/*** 根据年龄范围来删除
**/
public void deleteByAgeRange(int from, intto){/***@paramString table 表名
*@paramString whereClause 删除的条件,传null代表全部删除
*@paramString[] whereArgs 当删除条件都有不确定值时,在该参数中使用变量代替,不需要则传null
**/String whereClause= "age > ? and age < ?";
String[] whereArgs= new String[]{from + "", to + ""};
sd.delete("stu", whereClause, whereArgs);
}/*** 修改指定名字同学的年龄
*@paramString nameCondition 更新条件
*@paramint newAge 更新后的年龄
**/
public void updateData(String nameCondition, intnewAge){//String sqlUpdate = "update stu set age = "+age+" where name = '" + nameCondition +"'";//sd.execSQL(sqlUpdate);
/***@paramString table 表名
*@paramContentValues values 要更新的数据封装到该容器中
*@paramString whereClause 更新的条件,如果填null则表示无条件修改,即修改全部内容
*@paramString[] whereArgs 更新条件中含未知内容?部分使用该参数来填充,不需要则填null
*
**/ContentValues values= newContentValues();
values.put("name", nameCondition);
values.put("age", newAge);
String whereClause= "name = ?";
String[] whereArgs={nameCondition};
sd.update("stu", values, whereClause, whereArgs);
}/*** 查询所有数据
**/
publicCursor searchAll(){
Cursor cursor;//String sqlSelect = "select * from stu";//cursor = sd.rawQuery(sqlSelect, null);
/***@paramString table 表名
*@paramString[] columns 要返回的字段(列),如果需要返回所有字段,则传null即可
*@paramString selection 查询的条件,有不确定的部分用?占位,如果要查询全部则传null即可
*@paramString[] selectionArgs 查询中用?占位的部分,使用此参数进行填充,不需要则传null即可
*@paramString groupBy 分组条件,按照某字段或某几个字段进行分组,不需要则传null即可
*@paramString having 配合分组使用可以带条件,不需要则传null
*@paramString orderBy 排序条件,可以按照某个或某些字段分别做升序或者降序排列,不需要则传null
**/cursor= sd.query("stu", null, null, null, null, null, null);returncursor;
}/*** 按照年龄范围查询,结果按年龄升序排列
**/
public Cursor searchByAgeRange(int from, intto){
Cursor cursor;/***@paramString table 表名
*@paramString[] columns 要返回的字段(列),如果需要返回所有字段,则传null即可
*@paramString selection 查询的条件,有不确定的部分用?占位,如果要查询全部则传null即可
*@paramString[] selectionArgs 查询中用?占位的部分,使用此参数进行填充,不需要则传null即可
*@paramString groupBy 分组条件,按照某字段或某几个字段进行分组,不需要则传null即可
*@paramString having 配合分组使用可以带条件,不需要则传null
*@paramString orderBy 排序条件,可以按照某个或某些字段分别做升序或者降序排列,不需要则传null
**/String selection= "age > ? and age < ?";
String[] selectionArgs= {from + "", to + ""};
String orderBy= "age asc";
cursor= sd.query("stu", null, selection, selectionArgs, null, null, orderBy);returncursor;
}/*** 根据关键字进行模糊查询,结果按年龄降序排列
*@paramString key 查询的关键字
**/
publicCursor searchByKey(String key){
Cursor cursor;/***@paramString table 表名
*@paramString[] columns 要返回的字段(列),如果需要返回所有字段,则传null即可
*@paramString selection 查询的条件,有不确定的部分用?占位,如果要查询全部则传null即可
*@paramString[] selectionArgs 查询中用?占位的部分,使用此参数进行填充,不需要则传null即可
*@paramString groupBy 分组条件,按照某字段或某几个字段进行分组,不需要则传null即可
*@paramString having 配合分组使用可以带条件,不需要则传null
*@paramString orderBy 排序条件,可以按照某个或某些字段分别做升序或者降序排列,不需要则传null
**/String selection= "name like '%" + key +"%'";
String orderBy= "age desc";
cursor= sd.query("stu", null, selection, null, null, null, orderBy);returncursor;
}
}