在做城市搜索,此时,需要数据库,可数据源从何处获得?

1.新建一个.txt文件,以固定格式存储城市数据,如:

1||北京
2||天津
3|新疆|乌鲁木齐
4|新疆|奎屯
5|新疆|伊犁
6|新疆|库尔勒
7|新疆|阿克苏
8|青海省|西宁
9|河北省|石家庄
10|河北省|邯郸
11|河北省|保定

第一个字段为_id,第二个为provience,第三个字段为city

2.建数据库

public void onCreate(SQLiteDatabase db) {
Log.d("DatabaseHelper","oncreat database-----------------------------------------");
db.execSQL("CREATE TABLE "+ CITY_TABLE + " ("+
"_id INTEGER PRIMARY KEY , "+
"province TEXT, " +
"city TEXT);");

}

到系统的/data/data目录下的对应包下查看一下是否数据库已建好。

3.将.txt数据导入到数据库下

将.txt文件放到应用程序对应的databases目录下
adb push ~/桌面/city.txt /data/data/com.android.weather/databases

# cd /data/data/com.android.weather/databases
# ls
city.txt
city_search.db
# sqlite3 city_search.db
sqlite> .tables
android_metadata citytable
sqlite> .import city.txt citytable
adb pull /data/data/com.android.weather/databases/city_search.db ~/桌面

现在已经获取了一个city_search.db的文件在桌面上。

4.使用

package com.android.weather.db;import java.io.File;import java.io.FileOutputStream;
import java.io.InputStream;import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.Context;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.net.Uri;
import android.util.Log;
import com.android.weather.R;public class CityDataProvider extends ContentProvider {private static final String TAG = "CityDataProvider";private static final String AUTHORITY = "com.android.weather.db.city";private DatabaseHelper mDatabase;public static final Uri CONTENT_URI = Uri.parse("content://"+AUTHORITY+"/city");private final static String dataBaseDesDir =  "/data/data/com.android.weather/databases";@Overridepublic Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) {Log.d(TAG,"query");SQLiteDatabase db = mDatabase.getReadableDatabase();     return db.query(DatabaseHelper.CITY_TABLE, projection, selection, selectionArgs, null, null, null);}public boolean onCreate() {mDatabase = DatabaseHelper.getInstance(getContext());onCreateDatabaseDir();return true;}public int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) {return 0;}public int delete(Uri uri, String selection, String[] selectionArgs) {return 0;}public String getType(Uri uri) {return null;}public Uri insert(Uri uri, ContentValues values) {return null;}private static  class DatabaseHelper extends SQLiteOpenHelper {private static final String DATABASE_NAME = "city_search.db";private static final String CITY_TABLE = "citytable";private static final int DATABASE_VERSION =4;static synchronized DatabaseHelper getInstance(Context context) {return new DatabaseHelper(context);}public DatabaseHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}public void onCreate(SQLiteDatabase db) {Log.d("DatabaseHelper","oncreat database-----------------------------------------");
//              db.execSQL("CREATE TABLE "+ CITY_TABLE + " ("+
//                      "_id INTEGER PRIMARY KEY , "+
//                      "province TEXT, " +
//                      "city TEXT);");               }public void onUpgrade(SQLiteDatabase db, int oldVersion, int currentVersion) {
//              db.execSQL("DROP TABLE IF EXISTS "+CITY_TABLE);
//              onCreate(db);}}private  void onCreateDatabaseDir() {File dir = new File(dataBaseDesDir);if (!dir.exists()) {try {dir.mkdir();} catch (Exception e) {e.printStackTrace();}}copyDatabaseFile(dataBaseDesDir);}private  void copyDatabaseFile(String destDir) {File dest = new File(destDir+"/"+DatabaseHelper.DATABASE_NAME);       if(dest.exists()){return ;}try {Log.d(TAG,"the database is not exit,then copy it---------------------");InputStream in = CityDataProvider.this.getContext().getResources().openRawResource(R.raw.city_search);int size = in.available();byte buf[] = new byte[size];in.read(buf);in.close();FileOutputStream out = new FileOutputStream(dest);out.write(buf);out.close();} catch (Exception e) {e.printStackTrace();}}}

android 将.txt文件转化为.db并使用raw下的数据文件相关推荐

  1. Linux下将数据文件的指定域读取到shell脚本中

    Linux下将数据文件的指定域读取到shell脚本中 这个例子说明了怎样在Linux下shell脚本中从数据文件读取特定的域(field)并进行操作.例如,假设文件employees.txt的格式是{ ...

  2. 利用 BBED 恢复非归档模式下 OFFLINE 数据文件

    利用 BBED 恢复非归档模式下 OFFLINE 数据文件 今天来模拟一个非归档模式下恢复OFFLINE数据文件的场景,主要有2种情况: 一种是在线日志没有被覆盖,另一种是在线日志被覆盖. 第一种情况 ...

  3. 如何批量修改文件后缀名(包含该路径下的所有文件夹)

    1.批量修改某个文件夹目录下的所有文件的后缀名 方法非常简单,在该目录下,新建一个文本,此时文件后缀名是.txt.编辑该文本,文本内容为: ren *.ans *.out 此处的意思是将所有的.ans ...

  4. linux误删表空间文件,UNDO表空间下的数据文件被误删除后的处理方法

    UNDO表空间下的数据文件被误删除后的处理方法: 操作前备份数据库,以避免更大的损失. 思路: 1.把误删除的数据文件offline 2.正常打开数据库后创建新的UNDO表空间及数据文件 3.修改相应 ...

  5. 服务器c盘有个inetpub文件夹,Win10怎么删除c盘下的inetpub文件夹

    Win10怎么删除c盘下的inetpub文件夹 Win10怎么删除c盘下的inetpub文件夹?升级Win10系统之后,很多用户发现c盘多了一个名为"inetpub"的文件夹,那么 ...

  6. python怎么读取txt文件并统计其字数-python读写excel等数据文件方法汇总

    python处理数据文件第一步是要读取数据,文件类型主要包括文本文件(csv.txt等).excel文件.数据库文件.api等. 下面整理下python有哪些方式可以读取数据文件. 1. python ...

  7. Android 相关的arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题

    很好的一篇文章,相关问题学习了一下午,感觉瞬间通透,本文装载自欧阳鹏的博客,原文地址:http://blog.csdn.net/ouyang_peng/article/details/51168072 ...

  8. 关于Android arm64-v8a、armeabi-v7a、armeabi、x86等CPU下的so文件兼容问题

    先介绍几个专业词: ARM : 是嵌入式中的一种架构,全称为Advanced RISC Machine,能够理解为ARM处理器. ABI(Application Binary Interface): ...

  9. python解析json文件写入数据库_Python3实现将本地JSON大数据文件写入MySQL数据库的方法...

    本文实例讲述了Python3实现将本地JSON大数据文件写入MySQL数据库的方法.分享给大家供大家参考,具体如下: 最近导师给了一个yelp上的评论数据,数据量达到3.55个G,如果进行分析时直接使 ...

最新文章

  1. Prevent Crow's Feet
  2. Qt 学习之路:模型-视图高级技术
  3. Javascript实现网页水印(非图片水印)
  4. CentOS镜像下载地址
  5. cad2010背景怎么调成黑色_买皮蛋时,黄色和黑色的有什么区别?哪种更好?看完涨知识了...
  6. Facebook 上一位大佬发表的代码看法
  7. 渝粤教育 陕西师范大学 《证券投资学[专升本]》作业
  8. java中fmt标签库_jsp fmt标签详解
  9. Viod Class 启动
  10. eclipse安装选择清华镜像
  11. msm8953 fm设置频段流程
  12. [Bzoj3262]陌上花开(CDQ分治树状数组||树套树)
  13. linux安装软件的方式
  14. 计算机硬件认识与了解,计算机硬件认识实习报告参考
  15. 计步算法 睡眠 心率 学习 PPG传感器(转))
  16. VNC远程控制服务器卡顿
  17. Mybatis入门 基于XML实现增删改查(包含动态SQL标签的使用)
  18. 【练习八 结构体(强化)编程题4. 看电影】
  19. 数据库常用字段、列属性、表类型与SQLyog工具的使用
  20. ASP.Net绑定Sql数据源用echarts图表来展示数据

热门文章

  1. Nagios监控HP硬件状态
  2. HDOJ 1227 DP
  3. IT民工系列——通用7130芯片视频采集卡 SDK 兼容任意天敏 宏视 等板卡
  4. IT兄弟连 JavaWeb教程 文件下载技术
  5. Spring事务管理1-------环境搭建
  6. 为什么我会被淘汰(续)
  7. 来,我们一起学Hibernate
  8. Keepalived+nginx+redis主从+tomcat一机多实例实现会话共享
  9. 企业级备份方案系列PART3:SCDPM 2012备份/恢复Exchange2010
  10. vue学习(十五) 过滤器简单实用