在做城市搜索,此时,需要数据库,可数据源从何处获得?
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";
@Override
public 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();
}
}
}
分享到:
相关推荐
java读取本地.db文件简单方法,sqlite数据库类型文件获取数据
利用SQLite Expert工具将Excel表中的数据导入android数据库.db文件中(包内包含1.SQLite Expert 工具解压可用 2. 具体导入流程有截图)。
功能:通过批量读取多个excel文件,将每个excel文件创建为sqlite数据库文件中的一个表格,最终形成包含这些excel文件内容的.db数据库文件。 用法:将压缩包内的.exe/.dll文件放在同一文件夹内,双击运行文件内的...
可以查看android的数据库文件db工具
android 读取本地.db文件,实现不变数据本地化.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
android 读取本地.db文件,实现不变数据本地化,博客讲解:http://blog.csdn.net/qq_33078541/article/details/50704847
用于读取Android的db文件,一看就知道,简单好用,亲测
把网卡厂商对应的mac文件oui.txt,格式化生成sqlite数据库文件,device_factory.db。 oui官网地址 http://standards-oui.ieee.org/oui/oui.txt
QQ 的记录文件 (.db格式的文件)会随着使用而变得越来越大,比较明显的是聊天记录文件 msg2.0.db。 这类文件是只增不减的,比如就算你删除了所有旧的信息, msg2.0.db仍然是原来大小。 因此做了这个工具,他的目的是...
20Hz到20KHZ 0db(0.775Vp-p)音频测试文件,左右声道测试共50个.wav文件: 01. 20Hz-0dB-30s.wav 02. 30Hz-0dB-30s.wav 03. 40Hz-0dB-30s.wav 04. 50Hz-0dB-30s.wav 05. 60Hz-0dB-30s.wav 06. 70Hz-0dB-30s.wav 07. ...
com.zhihu.android.db
DB数据编辑器,可打开sqlite数据库(DB),可编辑DB数据库中的数据。选择所需要修改的数据,按F2键即可修改。
在测试的时候,需要造模拟数据,或者是将生产环境的数据导出到测试环境中去,本文记录通过python读取txt文件,并将数据导入mysql数据库 1、示例代码: import pymysql # 打开数据库连接 conn = pymysql.connect(host...
--将原bin文件的数据以4个字节为单位进行顺序转换 运行脚本前,需要修改脚本里面的文件名: 第1步:拷贝原bin文件至该文件夹下,例如原bin文件名称为“old.bin” 第2步:修改.bat文件为:bin2bin.exe old.bin new....
一个短小精悍的PARADOX数据文件DB的修复工具,能修复绝大多数损坏的DB文件。- 一个小的和悖论数据库数据文件修复工具,以修复大多数数据库文档的损坏。
城市选择数据库 .db文件《安卓》,适用于开发三级下拉城市列表 可转xml
DB9 DB15 DB25 DB37 D型公头母头连接器3D封装库(STEP后缀)文件: Connector - d-sub.STEP DB-Female.STEP DB-Male.STEP DB15RA_F.STEP DB15RA_M.STEP DB15_F.STEP DB15_M.STEP DB25 .STEP DB25-F.STEP DB25-M.STEP...
最经典的.db文件查看器 SQLiteSpy最新版
Peid最新UserDb.txt 查壳 2.6M 不可能查不到! 有个小错误,但不影响使用
peid查壳的userdb.txt文件,找了很久的,很全,2.58M,有个小错误,不影响使用。 方法:把userdb.txt复制到peid的文件夹把原来的那个覆盖了就行,有个小错误,不影响使用。或提示userdb.txt错误,行号:34872。不用管...