android 将.txt文件转化为.db并使用raw下的数据文件
在做城市搜索,此时,需要数据库,可数据源从何处获得?
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下的数据文件相关推荐
- Linux下将数据文件的指定域读取到shell脚本中
Linux下将数据文件的指定域读取到shell脚本中 这个例子说明了怎样在Linux下shell脚本中从数据文件读取特定的域(field)并进行操作.例如,假设文件employees.txt的格式是{ ...
- 利用 BBED 恢复非归档模式下 OFFLINE 数据文件
利用 BBED 恢复非归档模式下 OFFLINE 数据文件 今天来模拟一个非归档模式下恢复OFFLINE数据文件的场景,主要有2种情况: 一种是在线日志没有被覆盖,另一种是在线日志被覆盖. 第一种情况 ...
- 如何批量修改文件后缀名(包含该路径下的所有文件夹)
1.批量修改某个文件夹目录下的所有文件的后缀名 方法非常简单,在该目录下,新建一个文本,此时文件后缀名是.txt.编辑该文本,文本内容为: ren *.ans *.out 此处的意思是将所有的.ans ...
- linux误删表空间文件,UNDO表空间下的数据文件被误删除后的处理方法
UNDO表空间下的数据文件被误删除后的处理方法: 操作前备份数据库,以避免更大的损失. 思路: 1.把误删除的数据文件offline 2.正常打开数据库后创建新的UNDO表空间及数据文件 3.修改相应 ...
- 服务器c盘有个inetpub文件夹,Win10怎么删除c盘下的inetpub文件夹
Win10怎么删除c盘下的inetpub文件夹 Win10怎么删除c盘下的inetpub文件夹?升级Win10系统之后,很多用户发现c盘多了一个名为"inetpub"的文件夹,那么 ...
- python怎么读取txt文件并统计其字数-python读写excel等数据文件方法汇总
python处理数据文件第一步是要读取数据,文件类型主要包括文本文件(csv.txt等).excel文件.数据库文件.api等. 下面整理下python有哪些方式可以读取数据文件. 1. python ...
- Android 相关的arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
很好的一篇文章,相关问题学习了一下午,感觉瞬间通透,本文装载自欧阳鹏的博客,原文地址:http://blog.csdn.net/ouyang_peng/article/details/51168072 ...
- 关于Android arm64-v8a、armeabi-v7a、armeabi、x86等CPU下的so文件兼容问题
先介绍几个专业词: ARM : 是嵌入式中的一种架构,全称为Advanced RISC Machine,能够理解为ARM处理器. ABI(Application Binary Interface): ...
- python解析json文件写入数据库_Python3实现将本地JSON大数据文件写入MySQL数据库的方法...
本文实例讲述了Python3实现将本地JSON大数据文件写入MySQL数据库的方法.分享给大家供大家参考,具体如下: 最近导师给了一个yelp上的评论数据,数据量达到3.55个G,如果进行分析时直接使 ...
最新文章
- Prevent Crow's Feet
- Qt 学习之路:模型-视图高级技术
- Javascript实现网页水印(非图片水印)
- CentOS镜像下载地址
- cad2010背景怎么调成黑色_买皮蛋时,黄色和黑色的有什么区别?哪种更好?看完涨知识了...
- Facebook 上一位大佬发表的代码看法
- 渝粤教育 陕西师范大学 《证券投资学[专升本]》作业
- java中fmt标签库_jsp fmt标签详解
- Viod Class 启动
- eclipse安装选择清华镜像
- msm8953 fm设置频段流程
- [Bzoj3262]陌上花开(CDQ分治树状数组||树套树)
- linux安装软件的方式
- 计算机硬件认识与了解,计算机硬件认识实习报告参考
- 计步算法 睡眠 心率 学习 PPG传感器(转))
- VNC远程控制服务器卡顿
- Mybatis入门 基于XML实现增删改查(包含动态SQL标签的使用)
- 【练习八 结构体(强化)编程题4. 看电影】
- 数据库常用字段、列属性、表类型与SQLyog工具的使用
- ASP.Net绑定Sql数据源用echarts图表来展示数据