Android访问外部DB文件

来源:互联网 发布:java流程开发工具 编辑:程序博客网 时间:2024/06/02 02:15

注:本文代码参考了网上的例子,忘了什么地址了,所以无法提供说明,原作者看到勿怪,可以提醒我加上。

 

有时候自己导入DB文件进行操作,和访问本地数据库有点差异。

首先在res下建立一个文件夹raw,然后把DB文件导入进去

然后写一个方法获取SQLiteDatabase

private static SQLiteDatabase database;public static final String DATABASE_FILENAME = "city.db"; // 这个是DB文件名字  public static final String PACKAGE_NAME = "com.diz.db"; // 这个是自己项目包路径public static final String DATABASE_PATH = "/data"+ Environment.getDataDirectory().getAbsolutePath() + "/"+ PACKAGE_NAME; // 获取存储位置地址public static SQLiteDatabase openDatabase(Context context) {try {String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;File dir = new File(DATABASE_PATH);if (!dir.exists()) {dir.mkdir();}if (!(new File(databaseFilename)).exists()) {InputStream is = context.getResources().openRawResource(R.raw.city);FileOutputStream fos = new FileOutputStream(databaseFilename);byte[] buffer = new byte[8192];int count = 0;while ((count = is.read(buffer)) > 0) {fos.write(buffer, 0, count);}fos.close();is.close();}database = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);return database;} catch (Exception e) {e.printStackTrace();}return null;}


用这个方法就可以得到SQLiteDatabase实例对象,然后在activity中

SQLiteDatabase db = openDatabase(this);


然后就可以对数据库进行操作了。

String sql = "select * from tcity where sBelongCode='11'";Cursor c = db.rawQuery(sql, null);c.moveToFirst();while(!c.isAfterLast()) {String name = c.getString(c.getColumnIndex("sName"));Log.i("msg", name);c.moveToNext();}


这里只是做一个查询,然后输出到logcat中。

SQL语句按照自己需要的写。

原创粉丝点击