快速开发10之归属地查询——自带数据库查询类和数据库不用联网
2014-07-26 23:31
141 查看
去数据库查询号码归属地
1.网络查询
2.本地的数据库--数据库写一个工具类,去查询数据库
对于现在时代能不用流量就不用啊,所以选择第二种重点是因为在安卓里面 数据库必须放在asset里面而要找到必须先初始化拷贝进去
在activity初始化的时候 加入
copyDB();方法
接下来的代码 查询数据库的类 可以直接复制进你的项目中
NumberAddressQueryUtils
1.网络查询
2.本地的数据库--数据库写一个工具类,去查询数据库
对于现在时代能不用流量就不用啊,所以选择第二种重点是因为在安卓里面 数据库必须放在asset里面而要找到必须先初始化拷贝进去
在activity初始化的时候 加入
copyDB();方法
/** * //path 把address.db这个数据库拷贝到data/data/《包名》/files/address.db */ private void copyDB() { //只要你拷贝了一次,我就不要你再拷贝了 try { //得到目录 File file = new File(getFilesDir(), "address.db"); if(file.exists()&&file.length()>0){ //正常了,就不需要拷贝了 Log.i(TAG, "正常了,就不需要拷贝了"); }else{ InputStream is = getAssets().open("address.db"); FileOutputStream fos = new FileOutputStream(file); byte[] buffer = new byte[1024]; int len = 0; while((len = is.read(buffer))!= -1){ fos.write(buffer, 0, len); } is.close(); fos.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }其中还有万能代码,基本上输入输出是基本搞得定
接下来的代码 查询数据库的类 可以直接复制进你的项目中
NumberAddressQueryUtils
package com.xiaoxin.MobleSafe.dao; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class NumberAddressQueryUtils { private static String path = "data/data/com.xiaoxin.MobleSafe/files/address.db"; /** * 传一个号码进来,返回一归属地回去 * * @param number * @return */ public static String queryNumber(String number) { String address = number; // path 把address.db这个数据库拷贝到data/data/《包名》/files/address.db SQLiteDatabase database = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY); // 手机号码 13 14 15 16 18 // 手机号码的正则表达式 if (number.matches("^1[34568]\\d{9}$")) { // 手机号码 Cursor cursor = database .rawQuery( "select location from data2 where id = (select outkey from data1 where id = ?)", new String[] { number.substring(0, 7) }); while (cursor.moveToNext()) { String location = cursor.getString(0); address = location; } cursor.close(); } else { // 其他的电话号码 switch (number.length()) { case 3: // 110 address = "匪警号码"; break; case 4: // 5554 address = "模拟器"; break; case 5: // 10086 address = "客服电话"; break; case 7: // address = "本地号码"; break; case 8: address = "本地号码"; break; default: // /处理长途电话 10 if (number.length() > 10 && number.startsWith("0")) { // 010-59790386 Cursor cursor = database.rawQuery( "select location from data2 where area = ?", new String[] { number.substring(1, 3) }); while (cursor.moveToNext()) { <span style="white-space:pre"> </span>String location = cursor.getString(0); address = location.substring(0, location.length() - 2); } cursor.close(); // 0855-59790386 cursor = database.rawQuery( "select location from data2 where area = ?", new String[] { number.substring(1, 4) }); while (cursor.moveToNext()) { String location = cursor.getString(0); address = location.substring(0, location.length() - 2); } } break; } } return address; } }数据库的问题,你可以去某宝买一个也不贵20元
相关文章推荐
- SpringSide开发实战(二):修改数据库、字符编码和快速部署应用程序
- REDCAT 数据库应用软件快速开发平台
- J2ME 拼图游戏 快速开发 全过程 之代码祥解(2 )——游戏数据库与游戏模型开发
- 使用android快速开发框架afinal的FinalDb操作android数据库
- 使用 CI 简化数据库开发 《使用 CodeIgniter 框架快速开发 PHP 应用》
- [DNN模块开发]快速正确的制作DNN模块数据库安装脚本(2006-4-20重新修订)
- C# WPF 快速开发07ADO.NET操作数据库
- ACCP学习旅程之-----使用C#开发数据库应用程序(第五章 用控件进行快速开发)
- 使用rails高效开发之快速创建控制器 视图 模型和数据库文件
- 使用android快速开发框架afinal的FinalDb操作android数据库
- BLinQ ASP.NET中数据库快速开发工具介绍
- 基于元数据配置的asp.net数据库应用快速开发框架设计及实现
- Oracle启动附件分离说明_数据库开发_Java快速开发_.net快速开发
- 使用EGL服务向导快速开发数据库访问服务
- 【原创】Zend Framework快速开发(三)继续命令创建模板,连接数据库
- B/S系统快速开发平台中数据库Oracleo常用命令
- 全本《数据库开发这点事-Java快速入门》免费下载
- ASP.NET数据库公共操作类——快速开发的利器
- 使用rails高效开发之快速创建控制器 视图 模型和数据库文件
- C# WPF 快速开发06ADO.NET连接数据库