问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android 怎么替换外部数据库

发布网友 发布时间:2022-04-26 13:26

我来回答

1个回答

热心网友 时间:2022-06-28 15:05

1. 把原数据库包括在项目源码的 res/raw 目录下,然后建立一个DBManager类,代码如下:

 

package com.android.ImportDatabase;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.os.Environment;

import android.util.Log;

public class DBManager {

   private final int BUFFER_SIZE = 400000;

   public static final String DB_NAME = "countries.db"; //保存的数据库文件名

   public static final String PACKAGE_NAME = "com.android.ImportDatabase";

   public static final String DB_PATH = "/data"

           + Environment.getDataDirectory().getAbsolutePath() + "/"

           + PACKAGE_NAME;  //在手机里存放数据库的位置

   private SQLiteDatabase database;

   private Context context;

   DBManager(Context context) {

       this.context = context;

   }

   public void openDatabase() {

       this.database = this.openDatabase(DB_PATH + "/" + DB_NAME);

   }

   private SQLiteDatabase openDatabase(String dbfile) {

       try {

           if (!(new File(dbfile).exists())) {  //判断数据库文件是否存在,若不存在则执行导入,否则直接打开数据库

               InputStream is = this.context.getResources().openRawResource(

                       R.raw.countries); //欲导入的数据库

               FileOutputStream fos = new FileOutputStream(dbfile);

               byte[] buffer = new byte[BUFFER_SIZE];

               int count = 0;

               while ((count = is.read(buffer)) > 0) {

                   fos.write(buffer, 0, count);

               }

               fos.close();

               is.close();

           }

           SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile,

                   null);

           return db;

       } catch (FileNotFoundException e) {

           Log.e("Database", "File not found");

           e.printStackTrace();

       } catch (IOException e) {

           Log.e("Database", "IO exception");

           e.printStackTrace();

       }

       return null;

   }

 

   

//do something else here<br>

 

   

   public void closeDatabase() {

       this.database.close();

   }

}

   

然后在程序的首个Activity中示例化一个DBManager对象,然后对其执行openDatabase方法就可以完成导入了,可以把一些要对数据库进行的操作写在DBManager类里,然后通过DBManager类的对象调用;也可以在完成导入之后通过一个SQliteDatabase类的对象打开数据库,并执行操作。

我的做法是 在程序的首个Activity中导入数据库:

 

   

package com.android.ImportDatabase;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

public class RootView extends Activity {

   public DBManager dbHelper;

   

 

   

   @Override

   public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.main);

       dbHelper = new DBManager(this);

       dbHelper.openDatabase();

       dbHelper.closeDatabase();

   }

}

   

此时在DDMS中可以查看到,外部数据库已经成功导入

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么时候功率最大 最小 家电多少功率算高功率 大功率用电器在开启瞬间,需要比正常使用功率大很多的启动电流,这是为什 ... 大功率电器设备为什么不能一下开到最大 有一个节能灯突然坏了,是哪个件坏了? 我不知道是节能灯坏了,还是开关面板坏了,按下开关面板时,节能灯有时... 为什么节能灯老是烧坏 湖州南太湖新区包括龙之梦吗 南太湖新区有哪些地方 南太湖是哪里 如何替换MYSQL数据库文件 H2数据库的 DB文件什么情况下会被损坏?H2数据库突然连接不上了,后来发... 找回QQ被替换的聊天记录文件 如何拷贝catdb 我下载了很多图片还有配套的thumbs.db文件,请问如何替换当前的系统图标? 数据库mdb与db的区别,我想网站将db替换mdb数据库,因为Android有操作db的工具。而m 大家好,用itunes如何将sms.db替换为老手机导出到本地的文件,辈分目录里不能删除原来的sms.db文件。 FM2008 802下载 浴火银河2 亦银河风云2 THD版求破解。已尝试purchase.db替换,目前无进展。 什么是替换文件呀? 中国土生土长的连锁快餐都有哪些? 餐饮企业该上市吗? 西安都有哪些上市的餐饮 美国第一家上市的中餐品牌是哪家? 胖子变瘦子的穿越的BL小说 就是穿到一个胖子身上然后努力减肥变得好看的文,多发几本给我吧 求赌石和空间种田文^_^ 《重生肥妻好种田》txt下载在线阅读全文,求百度网盘云资源 人类是在退化还是进化? 拜求优美的种田文,一定要男女主角青梅竹马的,类似无尽相思风这样不太虐,比较温馨的文,最好附上一点简 求书,种田文,女主穿越到一个胖女人身上有个儿子和丈夫,丈夫会打猎好像是个将军还是个什么 CATDB文件被修改后,怎么在把它复制后在DOS下替换? 如何把自己的数据库替换过去,里面分别是什么 求助:如何把新的数据库替换掉原有的数据库 怎么使用OPPO手机OPPO?互传? 光大银行手机银行登录密码忘记如何处理? 光大银行手机银行登录密码忘了怎么办? 光大银行的网上银行登录密码是多少位数字的? 光大银行网上银行登录密码忘记了怎么办? 光大银行手机银行登录密码的设置规则? 光大银行网银初始登录密码 光大银行信用卡网银登录密码如何更改? 光大银行网上银行密码位数 中国光大银行手机银行怎么修改登录密码 光大银行个人网银登录密码的设置规则? 光大银行手机银行登录密码被锁定怎么办? 光大银行网银登陆密码忘记了怎么办? 光大银行手机银行登录密码怎么设置? 申请开通光大手机银行时要的登录密码怎么填写? 光大银行个人网银登录密码忘记怎么办? 光大银行的交易密码是什么,我只懂登录密码,交易密码好像是六位数