android随笔05——SQLite

来源:互联网 发布:安徽中港数据 编辑:程序博客网 时间:2024/06/06 04:27

 *黑名单数据库操作工具类
 * @author Administrator
 *
 public class BlackDao {
 //将此工具类封装起来,这样别人就只能通过一些公开的静态方法来获得当前对象的实例了而不能通过new 这个类了
 private BlackDao(Context ctx){
  dbHelper = newBlackDbHelper(ctx, "black_num.db", 1);
 }
 
 private static BlackDao instance;
 //线程同步锁synchronized 如果不添加那么就会有很小的几率会在很多线程同时调用的时候产生线程不同步而导致多次创建的BUG
 public synchronized static BlackDaogetInstance(Context ctx){
  //判断instance是否为空
  if(instance==null){
   //如果为空就新建一个
   instance =new BlackDao(ctx);
  
  }
  //如果instance已经存在那么就直接返回instance这样就能确保从始至终只有一个BlackDao对象 这就是单例模式
  return instance;
  
 }
 private BlackDbHelper dbHelper;
 
 //将表名抽取成一个成员变量
 private String table_black_num ="black_num";
 
 
  * 添加黑名单
  * @param number
  * @param mode
  
 public void addBlackNum(String number,intmode){
  //获得一个可写的数据库的引用
  SQLiteDatabase db =dbHelper.getWritableDatabase();
  
  ContentValues values = newContentValues();
  values.put("number",number);//参数一:列名  参数二:列名
  values.put("mode", mode);
  
  db.insert(table_black_num,"_id", values);//只要保证values中有内容,第二个参数可以写null
 }
 
  * 删除黑名单
  * @param number
 
 public void deleteBlackNum(String number){
  SQLiteDatabase db =dbHelper.getWritableDatabase();
  
  db.delete(table_black_num,"number = ?", new String[]{number});
  //参数一:表名 参数二:删除条件  参数三:参数二中的?由这里的字符串数组代替 前边有几个?后边的数组中就要有几个对应的 字符串
 }
 
  * 更新黑名单拦截模式
 
 public void updateBlackNum(String number,intnewMode){
  SQLiteDatabase db =dbHelper.getWritableDatabase();
  
  ContentValues values = newContentValues();
  values.put("mode",newMode);
  db.update(table_black_num,values,"number = ?", new String[]{number});
 }
 
  * 获得所有的黑名单信息
  * @return 黑名单列表,若没有黑名单,则列表长度为0
  
 public ListgetAllBlackNum(){
  
  List numList = newArrayList();
  
  SQLiteDatabase db =dbHelper.getReadableDatabase();
  Cursor cursor =db.query(table_black_num, null, null, null, null, null, null,null);
  //查询数据库返回的cursor默认是在第一行的上一行\
  while(cursor.moveToNext()){
   String number=cursor.getString(cursor.getColumnIndex("number"));//获得number这一列的值
   int mode =cursor.getInt(2);//获得下表为2 的这一列的值 mode这一列
   BlackNumBeanbalckbean = new BlackNumBean(number,mode);
   numList.add(balckbean);
   
   cursor.close();//用完一定记得关闭
  
  }
  return numList;
  
 }
}


public class BlackNumBean {
          * 黑名单号码
         public String number;
         * 拦截模式
         * 0全部
         * 1电话
         * 2短信
         public int mode;
         public BlackNumBean(){
                    super();
          }
         public BlackNumBean(String number,int mode){
                    super();
                    this.number = number;
                    this.mode = mode;
         }
          publicString toString() {
                    return "BlackNumBean [number=" + number + ", mode=" + mode +"]";
         }
}

0 0