第一步:将数据库文件放入到assets目录中。注意android studio需要将assets目录建在main项目下。即和java,res等文件夹是同级的。
第二步:首次使用app,将assets目录下的数据库文件加载到android手机的sd下
/**
* 见assets目录下的文件拷贝到sd上
* @return 存储数据库的地址
*/
// 复制和加载区域数据库中的数据
public static String CopySqliteFileFromRawToDatabases(String SqliteFileName) throws IOException {
// 第一次运行应用程序时,加载数据库到data/data/当前包的名称/database/<db_name>
File dir = new File("data/data/" + MyApplication.getContext().getPackageName() + "/databases");
LogUtil.i("!dir.exists()=" + !dir.exists());
LogUtil.i("!dir.isDirectory()=" + !dir.isDirectory());
if (!dir.exists() || !dir.isDirectory()) {
dir.mkdir();
}
File file= new File(dir, SqliteFileName);
InputStream inputStream = null;
OutputStream outputStream =null;
//通过IO流的方式,将assets目录下的数据库文件,写入到SD卡中。
if (!file.exists()) {
try {
file.createNewFile();
inputStream = MyApplication.getContext().getClass().getClassLoader().getResourceAsStream("assets/" + SqliteFileName);
outputStream = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int len ;
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer,0,len);
}
} catch (IOException e) {
e.printStackTrace();
}
finally {
if (outputStream != null) {
outputStream.flush();
outputStream.close();
}
if (inputStream != null) {
inputStream.close();
}
}
}
return file.getPath();
}
第三不:使用sd下的数据库文件。
/**
* 获取全国的省份
*
* @return
*/
public void getProvincesFromSQLite() {
SQLiteDatabase sqLiteDatabase = SQLiteDatabase.openDatabase(sqliePath, null, SQLiteDatabase.OPEN_READONLY);
Cursor cursor = sqLiteDatabase.rawQuery("SELECT * from T_Province", null);
provincesList.clear();
if (cursor.moveToFirst()) {
do {
String proSort = cursor.getString(cursor.getColumnIndex("ProSort"));
String proName = cursor.getString(cursor.getColumnIndex("ProName"));
provincesList.add(new Province(proSort,proName));
}while (cursor.moveToNext());
cursor.close();
}
provinceAdapter.notifyDataSetChanged();
}
版权声明:本文为u013680097原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。