Sqlite的操作示例代码
2024-09-02 01:13:48
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; /**
* 黑名单数据库
*/
public class BlackNumberOpenHelper extends SQLiteOpenHelper { public BlackNumberOpenHelper(Context context) {
super(context, "blacknumber.db", null, 1);
} @Override
public void onCreate(SQLiteDatabase db) {
//创建表 number: 电话号码; mode: 拦截模式,0(拦截电话),1(拦截短信),2(拦截全部)
String sql = "create table blacknumber(_id integer primary key autoincrement, number " +
"varchar(30), mode integer)";
db.execSQL(sql);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
}
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.util.ArrayList;
import cn.loaderman.mobilesafe11.db.BlackNumberOpenHelper;
import cn.loaderman.mobilesafe11.domain.BlackNumberInfo; /**
* Created by Administrator on 2016/11/24 0024.
* <p/>
* 黑名单增删改查操作: crud
* <p/>
* 单例设计模式
*/
public class BlackNumberDao { private final BlackNumberOpenHelper mHelper; //3. 声明一个静态对象: 两种方式初始化: 1. 饿汉模式
// private static BlackNumberDao mInstance = new BlackNumberDao();
//2. 懒汉模式
private static BlackNumberDao mInstance; //1. 私有构造方法
private BlackNumberDao(Context ctx) {
mHelper = new BlackNumberOpenHelper(ctx);
} //2.公开方法,返回单例对象
public static BlackNumberDao getInstance(Context ctx) {
//懒汉: 考虑线程安全问题, 两种方式: 1. 给方法加同步锁 synchronized, 效率低; 2. 给创建对象的代码块加同步锁
//读数据不会出现线程安全问题, 写数据会出现线程安全问题
//A, B, C
if (mInstance == null) {
//B, C
synchronized (BlackNumberDao.class) {
//A
if (mInstance == null) {
mInstance = new BlackNumberDao(ctx);
}
}
} return mInstance;
} public boolean add(String number, int mode) {
SQLiteDatabase database = mHelper.getWritableDatabase(); ContentValues values = new ContentValues();
values.put("number", number);
values.put("mode", mode);
//返回的是插入记录的id, -1表示失败
long insert = database.insert("blacknumber", null, values);
database.close();
return insert != -1;
} public boolean delete(String number) {
SQLiteDatabase database = mHelper.getWritableDatabase();
//返回删除的行数
int delete = database.delete("blacknumber", "number=?", new String[]{number});
database.close();
return delete > 0;
} public boolean update(String number, int mode) {
SQLiteDatabase database = mHelper.getWritableDatabase();
ContentValues values = new ContentValues();
//values.put("number", number);
values.put("mode", mode);
//返回更新的行数
int update = database.update("blacknumber", values, "number=?", new String[]{number});
database.close();
return update > 0;
} //查询某号码是否在黑名单数据库中
public boolean find(String number) {
SQLiteDatabase database = mHelper.getReadableDatabase(); Cursor cursor = database.query("blacknumber", null,
"number=?", new
String[]{number}, null, null, null);
boolean exist = false;
if (cursor != null) {
if (cursor.moveToNext()) {
//查询到了结果
//return true;
exist = true;
}
cursor.close();
}
database.close();
return exist;
} //查询某个号码的拦截模式
//返回-1表示没有查到结果
public int findMode(String number) {
SQLiteDatabase database = mHelper.getReadableDatabase(); Cursor cursor = database.query("blacknumber", new String[]{"mode"},
"number=?", new
String[]{number}, null, null, null); int mode = -1;
if (cursor != null) {
if (cursor.moveToNext()) {
//查询到了结果
mode = cursor.getInt(0);
}
cursor.close();
}
database.close();
return mode;
}
//查询所有黑名单集合
public ArrayList<BlackNumberInfo> findAll() {
SQLiteDatabase database = mHelper.getReadableDatabase();
Cursor cursor = database.query("blacknumber", new String[]{"number", "mode"},
null, null, null, null, null);
ArrayList<BlackNumberInfo> list = new ArrayList<>();
if (cursor != null) {
while (cursor.moveToNext()) {
BlackNumberInfo info = new BlackNumberInfo();
String number = cursor.getString(0);
int mode = cursor.getInt(1);
info.number = number;
info.mode = mode;
list.add(info);
}
cursor.close();
}
database.close(); return list;
} //分页查询黑名单集合
//index:查询的起始位置
public ArrayList<BlackNumberInfo> findPart(int index) {
SQLiteDatabase database = mHelper.getReadableDatabase();
//select * from blacknumber limit 0,20
//limit x,y : x代表起始数据位置; y代表查询多少条记录
//根据id逆序排列
Cursor cursor = database.rawQuery("select number,mode from blacknumber order by _id desc " +"limit ?,20", new String[]{index + ""});
ArrayList<BlackNumberInfo> list = new ArrayList<>();
if (cursor != null) {
while (cursor.moveToNext()) {
BlackNumberInfo info = new BlackNumberInfo();
String number = cursor.getString(0);
int mode = cursor.getInt(1);
info.number = number;
info.mode = mode;
list.add(info);
}
cursor.close();
}
database.close();
return list;
} //返回条目总个数
public int getTotalCount() {
//select count(*) from blacknumber
SQLiteDatabase database = mHelper.getReadableDatabase();
Cursor cursor = database.rawQuery("select count(*) from blacknumber", null);
int count = 0;
if (cursor != null) {
if (cursor.moveToNext()) {
count = cursor.getInt(0);
}
cursor.close();
}
database.close();
return count;
}
}
最新文章
- PHP window下安装Spl_Types模块
- 推荐轻量高效无依赖的开源JS插件和库
- scrollbar_test
- hdu 4627 The Unsolvable Problem
- (WPF) 文件和文件夹选择对话框。
- RHEL6.4找回root密码的方法
- Java发送邮件(带附件)
- MySQL解压版安装配置详解
- 语音控制的tab选项卡
- 纯html网页重定向与跳转
- Mschart绘制图表之X轴为时间的设置方式
- js中的一元加法和一元减法
- 自学WEB前端能不能找到一份前端开发工作
- [leetcode](4.21)3. 最长重复子串
- LwIP Application Developers Manual10---LwIP IPv4/IPv6 stacks
- LNMP环境的搭建(yum)方法(精)
- SQLServer 查看耗时较多的SQL语句(转)
- js 实现List
- CentOS 7安装SSHFS 实现远程主机目录 挂载为本地目录
- pillow与numpy实现图片素描化