android下访问已存在的sqlite数据库文件的办法

大部分android的开发书籍中都会详细的说明如何利用代码创建sqlite数据库,然后访问数据库。可实际的应用中数据库往往数据库已经新建好,并且已经导入原始数据。当然这些工作可以通过SQLiteOpenHelper.onCreate方法在操作数据库前完成,但一定程度上会影响数据访问的速度。
      本文提供两种办法将已建好的数据库上传至/data/data/<package name>/database目录下,此目录是android应用程序访问数据库的默认目录。
【方法一】 仅仅限于模拟器使用
    在Eclipse中执行【Window】-【Show View】-【other】-【File Explorer】操作,界面会显示模拟器的文件目录,通过树形结构找到/data/data/<package

name>/database目录,点击右上角的【Pull a file from the device】图标,选择要上传的数据库即可。
【方法二】 将数据库放到res/raw目录下,在第一次数据访问数据库时拷贝纸/data/data/<package name>/database目录下,拷贝的代码如下:
    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.dbname); 
                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(); 
            }
           
            SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null); 
            return database; 
        } catch (Exception e) {
            Log.i("open error", e.getMessage());
        } 
        return null;
    }   
posted @ 2011-09-04 16:25  therockthe  阅读(6803)  评论(0)    收藏  举报