黑名单拦截之SQLite的用法
1.安卓提供了SQLiteDatabase代表一个数据库,一单应用程序获得了代表数据库的SQLiteDATAbase对象,接下来就可以通过对象来管理操作数据库
实例一:
package com.xiaoxin.MobleSafe.dao;
import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class BlackNumberDBOpenHelper extends SQLiteOpenHelper{
/**
* 数据库创建的构造方法 数据库名称 blacknumber.db
* @param context
*/
public BlackNumberDBOpenHelper(Context context) {
super(context,"blacknumber.db",null,1);
}
//初始化数据库的表结构
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table blacknumber (_id integer primary key autoincrement,number varchar(20),mode varchar(2))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}可以看出单独创出一个类 将数据库和表结构实现出来
2.同时创建一个业务bean方法进行集合接受数据
package com.xiaoxin.mobilesafe.domain;
/**
* 黑名单号码的业务bean
* @author Administrator
*
*/
public class BlackNumberInfo {
private String number;
private String mode;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getMode() {
return mode;
}
public void setMode(String mode) {
this.mode = mode;
}
@Override
public String toString() {
return "BlackNumberInfo [number=" + number + ", mode=" + mode + "]";
}
}业务bean中有号码 和拦截模式
3.进行SQL语句操作SQLite数据库
package com.itheima.mobilesafe.db.dao;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.itheima.mobilesafe.db.BlackNumberDBOpenHelper;
import com.itheima.mobilesafe.domain.BlackNumberInfo;
/**
* 黑名单数据库的增删改查业务类
* @author Administrator
*
*/
public class BlackNumberDao {
private BlackNumberDBOpenHelper helper;
/**
* 构造方法
* @param context 上下文
*/
public BlackNumberDao(Context context) {<span style="white-space:pre"> </span>//将数据库传入
helper = new BlackNumberDBOpenHelper(context);
}
/**
* 查询黑名单号码是是否存在
* @param number
* @return
*/
public boolean find(String number){
boolean result = false;
SQLiteDatabase db = helper.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from blacknumber where number=?", new String[]{number});
if(cursor.moveToNext()){
result = true;
}
cursor.close();
db.close();
return result;
}
/**
* 查询黑名单号码的拦截模式
* @param number
* @return 返回号码的拦截模式,不是黑名单号码返回null
*/
public String findMode(String number){
String result = null;
SQLiteDatabase db = helper.getReadableDatabase();
Cursor cursor = db.rawQuery("select mode from blacknumber where number=?", new String[]{number});
if(cursor.moveToNext()){
result = cursor.getString(0);
}
cursor.close();
db.close();
return result;
}
/**
* 查询全部黑名单号码
* @return
*/
public List<BlackNumberInfo> findAll(){
List<BlackNumberInfo> result = new ArrayList<BlackNumberInfo>();
SQLiteDatabase db = helper.getReadableDatabase();
Cursor cursor = db.rawQuery("select number,mode from blacknumber order by _id desc", null);
while(cursor.moveToNext()){
BlackNumberInfo info = new BlackNumberInfo();
String number = cursor.getString(0);
String mode = cursor.getString(1);
info.setMode(mode);
info.setNumber(number);
result.add(info);
}
cursor.close();
db.close();
return result;
}
/**
* 添加黑名单号码
* @param number 黑名单号码
* @param mode 拦截模式 1.电话拦截 2.短信拦截 3.全部拦截
*/
public void add(String number,String mode){
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("number", number);
values.put("mode", mode);
db.insert("blacknumber", null, values);
db.close();
}
/**
* 修改黑名单号码的拦截模式
* @param number 要修改的黑名单号码
* @param newmode 新的拦截模式
*/
public void update(String number,String newmode){
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("mode", newmode);
db.update("blacknumber", values, "number=?", new String[]{number});
db.close();
}
/**
* 删除黑名单号码
* @param number 要删除的黑名单号码
*/
public void delete(String number){
SQLiteDatabase db = helper.getWritableDatabase();
db.delete("blacknumber", "number=?", new String[]{number});
db.close();
}
}
可以看出增删该查与JDBC是差不多的
读入
SQLiteDatabase db = helper.getReadableDatabase();
写入
SQLiteDatabase db = helper.getWritableDatabase();