这里只写简单的查询操作.如项目中有一些固定的资源,国家城市信息等,我们把数据库文件放到assets中进行读取等.
拷贝数据库文件
assets目录下的数据库文件是不能直接去操作的,我们首先需要把它拷贝到本地sd卡上,拷贝方法如下:
File file = new File("/data/data/" + "com.xinyang.demo" + "/databases/", dbName);// 目的文件
if (file.exists()) {
Log.e("xinyang", "数据库已存在");
return;
}
FileOutputStream out = null;
InputStream in = null;
try {
out = new FileOutputStream(file);
in = getAssets().open(dbName);// 源文件
int len = 0;
byte[] buffer = new byte[1024];
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
out.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
上面的路径需要替换为你自己的包名,dbName是数据库文件名称,如"dict.db".
创建数据库操作帮助类
public class SqlHelper extends SQLiteOpenHelper {
public SqlHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
public SqlHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
在这里可以创建表,升级数据库操作等,但我们只需要读取固定的数据库就好,所以什么操作都不做啦!
查询
在需要查询的页面创建数据库帮助类对象:
//需要传入context,数据库名字,版本等:
SqlHelper mHelper = new SqlHelper(mContext, Global.DB, null, 1);
//通过数据库帮助类获取数据库对象
SQLiteDatabase mDb = mHelper.getReadableDatabase();
接下来就是查询操作,你可以使用android封装好的方法query(),也可以直接传入sql语句来操作,如果你对sql语句比较数据,推荐直接使用sql语句来操作:
可以看到该方法需要很多参数,最少的一个都要7种:表名,查询的列(传null表示查询全部列),筛选条件,筛选值,分组规则,这个我也不知道,排序规则.