db文件的读取

  1. 将格式为db的文件拷贝到assets中;
  2. 将文件拷贝到/data/data/项目包名/databases/xx.db;

    1. // 将assets中的文件拷贝到系统databases目录下
    2. publicclassDbUtils{
    3. @SuppressLint("SdCardPath")
    4. publicstaticvoid packDataBase(Context context,String dbName){
    5. File file = context.getDatabasePath(dbName);
    6. try{
    7. // 判断下文件是否存在,存在就不用重新拷贝了
    8. if(!file.exists()){
    9. OutputStream os =newFileOutputStream(file);
    10. InputStream is = context.getAssets().open(dbName);
    11. // 文件写入
    12. byte[] buffer =newbyte[1024];
    13. int length;
    14. while((length = is.read(buffer))>0){
    15. os.write(buffer,0, length);
    16. }
    17. // 关闭文件流
    18. os.flush();
    19. os.close();
    20. is.close();
    21. }
    22. }catch(IOException e){
    23. e.printStackTrace();
    24. }
    25. }
    26. }

  3. 自定义SQLLiteHlpter类,创建一个名字和步骤1中db名称一样的数据库;
  4. 增删改查
  5. 电话号码查询归属地示例

    1. publicclassAddressDao{
    2. publicstaticString mAddress ="未知号码";
    3. publicstaticString getAddress(String phone){
    4. mAddress ="未知号码";
    5. DbManager.DaoConfig daoConfig =newDbManager.DaoConfig().setDbName(Constant.DB_ADDRESS)
    6. .setDbVersion(1);
    7. DbManager db = x.getDb(daoConfig);
    8. //正则表达式,匹配手机号码
    9. String regularExpression ="^1[3-8]\\d{9}";
    10. if(phone.matches(regularExpression)){
    11. // 处理手机号码
    12. phone = phone.substring(0,7);
    13. String sql ="select s.location from data1 t left join data2 s on t.outkey=s.id where t.id =? order by s.id;";
    14. SqlInfo sqlInfo =newSqlInfo(sql);
    15. sqlInfo.addBindArg(newKeyValue("id",phone));//key值可以随便写
    16. try{
    17. Cursor cursor = db.execQuery(sqlInfo);
    18. if(cursor.moveToNext()){
    19. mAddress = cursor.getString(0);
    20. }
    21. }catch(DbException e){
    22. e.printStackTrace();
    23. }
    24. }else{
    25. int length = phone.length();
    26. switch(length){
    27. case3://119 110 120 114
    28. if("110".equals(phone)){
    29. mAddress ="报警电话";
    30. }elseif("114".equals(phone)){
    31. mAddress ="查号电话";
    32. }elseif("119".equals(phone)){
    33. mAddress ="火警电话";
    34. }elseif("120".equals(phone)){
    35. mAddress ="抢救电话";
    36. }
    37. break;
    38. case4://5556,5554
    39. mAddress ="模拟器";
    40. break;
    41. case5://10086 99555
    42. mAddress ="服务电话";
    43. break;
    44. case7:
    45. mAddress ="本地电话";
    46. break;
    47. case8:
    48. mAddress ="本地电话";
    49. break;
    50. case11:
    51. //(3+8) 区号+座机号码(外地),查询data2
    52. String area = phone.substring(1,3);
    53. String sql ="select location from data2 where area=?";
    54. SqlInfo sqlInfo =newSqlInfo(sql);
    55. sqlInfo.addBindArg(newKeyValue("area",area));
    56. try{
    57. Cursor cursor = db.execQuery(sqlInfo);
    58. if(cursor.moveToNext()){
    59. String temp = cursor.getString(0);
    60. mAddress= getLocation(temp);
    61. }
    62. }catch(DbException e){
    63. e.printStackTrace();
    64. }
    65. break;
    66. case12:
    67. //(4+8) 区号(0791(江西南昌))+座机号码(外地),查询data2
    68. String area1 = phone.substring(1,4);
    69. String sql1 ="select location from data2 where area=?";
    70. SqlInfo sqlInfo1 =newSqlInfo(sql1);
    71. sqlInfo1.addBindArg(newKeyValue("area",area1));
    72. try{
    73. Cursor cursor = db.execQuery(sqlInfo1);
    74. if(cursor.moveToNext()){
    75. String temp = cursor.getString(0);
    76. mAddress= getLocation(temp);
    77. }
    78. }catch(DbException e){
    79. e.printStackTrace();
    80. }
    81. break;
    82. }
    83. }
    84. return mAddress;
    85. }
    86. privatestaticString getLocation(String location){
    87. String result ="";
    88. if(location.contains("移动")){
    89. result = location.substring(0,location.indexOf("移动"));
    90. }elseif(location.contains("联通")){
    91. result = location.substring(0,location.indexOf("联通"));
    92. }elseif(location.contains("电信")){
    93. result = location.substring(0, location.indexOf("电信"));
    94. }
    95. return result+"固定电话";
    96. }
    97. }

来自为知笔记(Wiz)

时间: 2024-10-10 01:28:53

db文件的读取的相关文章

扩展SQLite使其能从apk文件中读取db

游戏中会大量使用到配置文件,每个项目组根据自己不同的需求会选择不同的存储格式,比如使用Json或者SQLite来存储数据.此处我们只对使用SQLite的情况来做讨论.一般情况下会选择把它放在可读写目录里面,这样SQLite可以直接使用它原来的io API来对db文件进行读取.在PC或者iOS平台上这不是问题.但是如果在Android平台上,游戏安装后还是以一个apk文件的形式存在.如果我们的数据放在了db中,使用SQLite原来自带的io功能是不能进行读取的.这里有3种方式可以供选择: 在程序第

android数据库操作之直接读取db文件

在对数据库操作时,常用的有两种方法: 1.在代码中建库.建表: 2.直接将相关库.表建立好,将db文件拷贝至assets目录下: 现在来看看第二种方法: private String GetDataBasePath(Context context) { String packageName = context.getPackageName(); //Log.i("PackName", packageName); // String DB_PATH = String.format(&qu

【WinForm】杂记(1):C#读取DB文件

第一步 下载DLL文件并安装 DLL下载地址https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki 选用版本sqlite-netFx46-setup-bundle-x64-2015-1.0.112.0.exe,适用框架.NET Framework 4.6(可以根据自己的需要选用). 下载后,系统默认安装在C:\Program Files\System.Data.SQLite路径下,拷贝System.Data.S

C# 实现DB文件的导入导出功能

1.     DB文件的导出 private void InsertDB(DataTable dt, string FileName) { try { string userIds = string.Empty; string[] str = ccbUserName.Text.Split(','); for (int s = 0; s < str.Length; s++) { userIds += GetUserId(str[s].Trim()) + "',"; } userId

Spring-batch学习总结(3)—ItemReader普通文件,数据库,XML,多文件数据读取

Spring-Batch学习总结(3)--如何数据输入一.ItemReader概述1.ItemReader:提供数据的接口2.在这个接口中只有一个方法read(),它读取一个数据并且移动到下一个数据上去,在读取结束时必须返回一个null,否则表明数据没有读取完毕;例:OverViewApplication: package com.dhcc.batch.batchDemo.input.overview; import org.springframework.batch.core.configur

vc中json文件的读取、修改和添加字段的方法

前言: 本代码涉及到对json文件的读取.修改和添加方法 WTL中radir button的状态判断和设置可选以及取消可选 示例: 所需头文件: #include <json.h> #include <file_io.h> 代码部分: //读取下载线路在界面上的radir button中显示 void CMainDlg::read_download_line_from_cfg() { std_string strDownloadLine; file_io<> json_

java使用POI实现excel文件的读取,兼容后缀名xls和xlsx

需要用的jar包如下: 如果是maven管理的项目,添加依赖如下: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version> </depen

考勤管理系统:实现数据在文件的读取功能

//获取系统时间的方法:Date date=new Date(new java.util.Date().getTime()); /* * 考勤管理系统:实现数据在文件的读取功能;两个模块,功能如下: * ----管理员模块: * 1.注册新用户 * 2.查询所用用户 * ----用户模块: * 1.上班打卡 * 2.下班打卡 * 3.查询历史打卡记录 * */public class TestUser { static Scanner input=new Scanner(System.in);

通过codehaus来实现json写入文件和读取文件成json对象

原文:通过codehaus来实现json写入文件和读取文件成json对象 代码下载地址:http://www.zuidaima.com/share/1550463256562688.htm pom.xml需要增加如下依赖: <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-lgpl</artifactId> <version>1.