学习墨迹天气札记之一 —— 城市数据库

本文探讨了墨迹天气应用中城市数据库的初始化过程,重点关注如何从res/raw目录加载预置数据库,并介绍了一个名为DBManager的类来实现这一功能。此外,还分析了其SQL查询,揭示了城市和省份表之间的连接以及对拼音和别名的支持,以优化搜索效率。
摘要由CSDN通过智能技术生成

最近实验室要做一个模仿墨迹天气的应用,所以研究了一下。

墨迹天气有一个功能是“添加城市”,通过测试我们可以知道这是通过一个数据库对各个城市进行存储的,同时,设置里还可以从网上更新城市列表。但是最开始的城市是一开始就存好的。中外的城市有2000多个,如何在程序中有效地初始化数据库成为了我主要关心的问题。

通过反编译墨迹天气的apk,看到初始化数据库主要使用了下面一段代码

public void initDBCity()
  {
    File localFile1 = this.context.getDatabasePath("mojicity.db");
    File localFile2 = new File(localFile1.toString().substring(0, localFile1.toString().lastIndexOf("/")));
    if (!localFile2.exists())
      localFile2.mkdir();
    InputStream localInputStream;
    FileOutputStream localFileOutputStream;
    try
    {
      if (!localFile1.exists())
      {
        localInputStream = this.context.getResources().openRawResource(2131099648);
        localFileOutputStream = new FileOutputStream(localFile1);
        byte[] arrayOfByte = new byte[8192];
        while (true)
        {
          int i = localInputStream.read(arrayOfByte);
          if (i <= 0)
            break;
          localFileOutputStream.write(arrayOfByte, 0, i);
        }
      }
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return;
    localFileOutputStream.close();
    localInputStream.close();
  }

其中最重要的就是标红的这句话,这句话的意思是从res/raw这个文件夹下读取一个文件,也就是用来初始化数据库的文件。

根据代码查找了下Android如何导入已有的外部数据库及其原理。把查找的资料贴一部分过来。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值