23.创建黑名单数据库

1.创建帮助类,创建表

  1. public class BlackNumberOpenHelper extends SQLiteOpenHelper{
  2. public BlackNumberOpenHelper(Context context) {
  3. super(context, "safe.db", null, 1);
  4. }
  5. /**
  6. * blacknumber 表名
  7. * _id 主键自动增长
  8. * number 电话号码
  9. * mode 拦截模式 电话拦截 短信拦截
  10. * @param db
  11. */
  12. @Override
  13. public void onCreate(SQLiteDatabase db) {
  14. db.execSQL("create table blacknumber (_id integer primary key autoincrement,number varchar(20),mode varchar(2))");
  15. }
  16. @Override
  17. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  18. }
  19. }

2.创建数据库,并写增删改查、分页加载、分批加载、获取总记录方法

  1. public class BlackNumberDao {
  2. public BlackNumberOpenHelper helper;
  3. public BlackNumberDao(Context context) {
  4. helper = new BlackNumberOpenHelper(context);
  5. }
  6. /**
  7. * @param number 黑名单号码
  8. * @param mode 拦截模式
  9. */
  10. public boolean add(String number, String mode) {
  11. SQLiteDatabase db = helper.getWritableDatabase();
  12. ContentValues contentValues = new ContentValues();
  13. contentValues.put("number", number);
  14. contentValues.put("mode", mode);
  15. long rowid = db.insert("blacknumber", null, contentValues);
  16. if (rowid == -1) {
  17. return false;
  18. } else {
  19. return true;
  20. }
  21. }
  22. /**
  23. * 通过电话号码删除
  24. *
  25. * @param number 电话号码
  26. */
  27. public boolean delete(String number) {
  28. SQLiteDatabase db = helper.getWritableDatabase();
  29. int rowNumber = db.delete("blacknumber", "number=?", new String[]{number});
  30. if (rowNumber == 0) {
  31. return false;
  32. } else {
  33. return true;
  34. }
  35. }
  36. /**
  37. * 通过电话号码修改拦截的模式
  38. *
  39. * @param number
  40. */
  41. public boolean changeNumberMode(String number, String mode) {
  42. SQLiteDatabase db = helper.getWritableDatabase();
  43. ContentValues values = new ContentValues();
  44. values.put("mode", mode);
  45. int rownumber =db.update("blacknumber", values, "number=?", new String[]{number});
  46. if (rownumber == 0) {
  47. return false;
  48. } else {
  49. return true;
  50. }
  51. }
  52. /**
  53. * 返回一个黑名单号码拦截模式
  54. *
  55. * @return
  56. */
  57. public String findNumber(String number) {
  58. String mode = "";
  59. SQLiteDatabase db = helper.getReadableDatabase();
  60. Cursor cursor = db.query("blacknumber", new String[]{"mode"}, "number=?", new String[]{number}, null, null, null);
  61. if (cursor.moveToNext()) {
  62. mode = cursor.getString(0);
  63. }
  64. cursor.close();
  65. db.close();
  66. return mode;
  67. }
  68. /**
  69. * 查询所有的黑名单
  70. *
  71. * @return
  72. */
  73. public List<BlackNumberInfo> findAll() {
  74. SQLiteDatabase db = helper.getReadableDatabase();
  75. List<BlackNumberInfo> blackNumberInfos = new ArrayList<BlackNumberInfo>();
  76. Cursor cursor = db.query("blacknumber", new String[]{"number", "mode"}, null, null, null, null, null);
  77. while (cursor.moveToNext()) {
  78. BlackNumberInfo blackNumberInfo = new BlackNumberInfo();
  79. blackNumberInfo.setNumber(cursor.getString(0));
  80. blackNumberInfo.setMode(cursor.getString(1));
  81. blackNumberInfos.add(blackNumberInfo);
  82. }
  83. cursor.close();
  84. db.close();
  85. SystemClock.sleep(3000);
  86. return blackNumberInfos;
  87. }
  88. /**
  89. * 分页加载数据
  90. *
  91. * @param pageNumber 表示当前是哪一页
  92. * @param pageSize 表示每一页有多少条数据
  93. * @return limit 表示限制当前有多少数据
  94. * offset 表示跳过 从第几条开始
  95. */
  96. public List<BlackNumberInfo> findPar(int pageNumber, int pageSize) {
  97. SQLiteDatabase db = helper.getReadableDatabase();
  98. // 数值转为字符串:string.valueof()
  99. // 也可以字符串转为数值:Folat.valueof(str).folatValue() Double.valueof(str).doubleValue()
  100. Cursor cursor = db.rawQuery("select number,mode from blacknumber limit ? offset ?", new String[]{String.valueOf(pageSize),
  101. String.valueOf(pageSize * pageNumber)});
  102. List<BlackNumberInfo> blackNumberInfos = new ArrayList<BlackNumberInfo>();
  103. while (cursor.moveToNext()) {
  104. BlackNumberInfo blackNumberInfo = new BlackNumberInfo();
  105. blackNumberInfo.setMode(cursor.getString(1));
  106. blackNumberInfo.setNumber(cursor.getString(0));
  107. blackNumberInfos.add(blackNumberInfo);
  108. }
  109. cursor.close();
  110. db.close();
  111. return blackNumberInfos;
  112. }
  113. /**
  114. * 分批加载数据
  115. * @param startIndex 开始的位置
  116. * @param maxCount 每页展示的最大的条目
  117. * @return
  118. */
  119. public List<BlackNumberInfo> findPar2(int startIndex, int maxCount) {
  120. SQLiteDatabase db = helper.getReadableDatabase();
  121. Cursor cursor = db.rawQuery("select number,mode from blacknumber limit ? offset ?", new String[]{String.valueOf(maxCount),
  122. String.valueOf(startIndex)});
  123. List<BlackNumberInfo> blackNumberInfos = new ArrayList<BlackNumberInfo>();
  124. while (cursor.moveToNext()) {
  125. BlackNumberInfo blackNumberInfo = new BlackNumberInfo();
  126. blackNumberInfo.setMode(cursor.getString(1));
  127. blackNumberInfo.setNumber(cursor.getString(0));
  128. blackNumberInfos.add(blackNumberInfo);
  129. }
  130. cursor.close();
  131. db.close();
  132. return blackNumberInfos;
  133. }
  134. /**
  135. * 获取总的记录数
  136. * @return
  137. */
  138. public int getTotalNumber(){
  139. SQLiteDatabase db = helper.getReadableDatabase();
  140. Cursor cursor = db.rawQuery("select count(*) from blacknumber", null);
  141. cursor.moveToNext();
  142. int count = cursor.getInt(0);
  143. cursor.close();
  144. db.close();
  145. return count;
  146. }
  147. }

3.新建测试类

  1. public class TestBlackNumberDao extends AndroidTestCase {
  2. public Context mContext;
  3. @Override
  4. protected void setUp() throws Exception {
  5. this.mContext = getContext();
  6. super.setUp();
  7. }
  8. public void testAdd(){
  9. BlackNumberDao dao = new BlackNumberDao(mContext);
  10. Random random = new Random();
  11. for (int i = 0; i < 200; i++) {
  12. Long number = 13300000000l +i;
  13. dao.add(number +"",String.valueOf(random.nextInt(3) + 1));
  14. }
  15. }
  16. public void testDelete(){
  17. BlackNumberDao dao = new BlackNumberDao(mContext);
  18. boolean delete = dao.delete("13300000000");
  19. assertEquals(true,delete);
  20. }
  21. public void testFind(){
  22. BlackNumberDao dao = new BlackNumberDao(mContext);
  23. String number = dao.findNumber("13300000004");
  24. System.out.println(number);
  25. }
  26. public void testFindAll(){
  27. BlackNumberDao dao = new BlackNumberDao(mContext);
  28. List<BlackNumberInfo> blackNumberInfos = dao.findAll();
  29. for (BlackNumberInfo blackNumberInfo : blackNumberInfos) {
  30. System.out.println(blackNumberInfo.getMode() + "" + blackNumberInfo.getNumber());
  31. }
  32. }
  33. }

来自为知笔记(Wiz)

时间: 2024-10-11 12:20:36

23.创建黑名单数据库的相关文章

创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表

创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添加一个User类: namespace MyFirstApp.Models { public class User { public int ID { get; set; } public string Name { get; set; } public string Email { get; se

我的手机管家(6)骚扰拦截 黑名单数据库

将添加的黑名单存储到本地数据库: 创建一个黑名单数据库, 将存储number(电话号)和mode(模式) 1 电话  2 短信  3 全部 数据库创建: package com.chb.myphonesave.dao; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class

手工创建Oracle数据库

步骤: 1.设置环境变量和创建目录           2. 创建初始化参数文件           3. 启动实例到nomount状态创建数据库           4.运行脚本创建字典.视图.包.角色.权限.同义词           5.检查数据库相关信息           6.启用归档日志 数据库版本: SQL> select * from v$version; BANNER -------------------------------------------------------

使用Python创建MySQL数据库实现字段动态增加以及动态的插入数据

应用场景: 我们需要设计一个数据库来保存多个文档中每个文档的关键字.假如我们每个文档字符都超过了1000,取其中出现频率最大的为我们的关键字. 假设每个文档的关键字都超过了300,每一个文件的0-299号存储的是我们的关键字.那我们要建这样一个数据库,手动输入这样的一个表是不现实的,我们只有通过程序来帮我实现这个重复枯燥的操作. 具体的示意图如下所示: 首先图1是我们的原始表格: 图1 这个时候我们需要程序来帮我们完成自动字段的创建和数据的插入. 图2 上图是我们整个表的概况.下面我们就用程序来

如何创建PostgreSQL数据库

PostgreSQL提供两种方式创建一个新的数据库:第一种是使用CREATE DATABASE的SQL命令.第二种使用createdb的一个命令行可执行文件. 第一种:使用CREATE DATABASE来创建数据库. 语法格式: CREATE DATABASE语句的基本语法如下:  CREATE DATABASE dbname;    其中dbname是要创建的数据库的名称. 举例说明: 下面是一个简单的例子,这将创建testdb 在PostgreSQL模式: 说明:我们输入create dat

PostgreSQL创建一个数据库

看看你能否访问数据库服务器的第一个例子就是试着创建一个数据库.一台运行着的 PostgreSQL 服务器可以管理许多数据库.通常我们会为每个项目和每个用户单独使用一个数据库. 节点管理员可能已经为你创建了可以使用的数据库.他应该已经告诉你这个数据库的名字.如果这样你就可以省略这一步,并且跳到下一节. 要创建一个新的数据库(在我们这个例子里叫 mydb),你可以使用下面的命令: $ createdb mydb 它应该生成下面这样的响应: CREATE DATABASE 如果这样,那么这一步就成功了

如何在aix环境下创建DB2数据库

创建DB2(DB2认证 DB2培训 )数据库(数据库培训 数据库认证 )应该是每个DB2使用者都需要掌握的知识,下面就为您介绍在AIX(AIX认证考试 IBM AIX培训 )环境下创建DB2数据库的方法,如果您在创建DB2数据库方面遇到过问题,不妨一看. 查看环境变量 db2set 如果发现db2set中db2codepage不是819,执行 以下是代码片段: db2set db2codepage=819 db2 create database test05 on /home/db2inst1

如何手动创建oracle数据库

下面的实验室是如何不要通过DBCA创建ORACLE 数据库,而是通过ORACLE ONLINE HELP DOCUMENT进行手动的创建数据库的详细步骤: 1,编辑Oracle profile [[email protected] ~]# su - oracle [[email protected] ~]$ vi ./.bash_profile PATH=$PATH:$HOME/bin export PATH export ORACLE_BASE=/u01/app/oracle export O

怎样手动创建oracle数据库

以下的实验室是怎样不要通过DBCA创建ORACLE 数据库,而是通过ORACLE ONLINE HELP DOCUMENT进行手动的创建数据库的具体步骤: 1,编辑Oracle profile [[email protected] ~]# su - oracle [[email protected] ~]$ vi ./.bash_profile PATH=$PATH:$HOME/bin export PATH export ORACLE_BASE=/u01/app/oracle export O