Android 拷贝数据库文件

本文介绍了一种在Android开发中使用预装数据库的方法,避免了创建数据库和逐条插入数据的过程,尤其适用于需要提供大数据量资源搜索功能的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


        做android开发时,有时并不一定要创建数据库然后插入数据的过程。譬如,需要提供一个大数据量资源的搜索功能。像号码归属地,城市列表,ip归属地等。此时如果键数据库,再将数据一条一条insert到数据库中,不仅耗时,占用资源,有时还会导入错误。最好的方法是将数据库建好,数据insert好,并将该beifen.db文件放在raw(如果没有,在res目录下建一个)目录下。在创建数据库时,直接将该文件拷贝到databases目录下:DATABASES_DIR="/data/data/yourpackagedir/databases", DATABASE_NAME="beifen.db"。详细见代码:


    
    public static synchronized CityDBHelper getInstance(Context context) {
        copyDatabaseFile(context, true);
        if(mDatabase == null){
            mDatabase =  new CityDBHelper(context);
        }
        return mDatabase;
    }

    public static void copyDatabaseFile(Context context, boolean isfored) {
		
			Log.v(TAG, "--------------------------------copyDatabaseFile-");
			
			File dir = new File(DATABASES_DIR);
			if (!dir.exists() || isfored) {
				try {
					dir.mkdir();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
			
			File dest = new File(dir, DATABASE_NAME);
			if(dest.exists() && !isfored){
				return ;
			}
			
			try {
				if(dest.exists()){
					dest.delete();
				}
				dest.createNewFile();	
				InputStream in = context.getResources().openRawResource(R.raw.beifen);
				int size = in.available();
				byte buf[] = new byte[size];
				in.read(buf);
				in.close();
				FileOutputStream out = new FileOutputStream(dest);
				out.write(buf);
				out.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

如果这样还不放心,可以在运行ContentProvider的query(一般拷贝数据库都是用于查询的)时,做一次拷贝检测

copyDatabaseFile(context, false)
如果该文件没有,则拷贝,如果有,不拷贝



要使用adb pull命令从Android设备中提取数据库文件,您需要在命令行中执行以下步骤: 1. 首先,连接到您的Android设备并打开命令行终端。 2. 使用adb shell命令进入设备的shell环境。 3. 导航到数据库文件所在的目录。根据您提供的引用内容,在命令行中输入以下命令:cd /data/data/com.android.contacts/databases/ 4. 确保您在正确的目录中,可以使用ls命令来查看目录中的文件列表。根据您提供的引用内容,您可以在命令行中输入以下命令:ls 5. 一旦您确定了数据库文件的位置,您可以使用adb pull命令来提取数据库文件。在命令行中,输入以下命令:adb pull <数据库文件名> <本地目标路径> 请注意,<数据库文件名>应该是您想要提取的数据库文件的实际文件名,<本地目标路径>是您希望将数据库文件保存到的本地计算机上的目标路径。 综上所述,要使用adb pull命令从Android设备中提取数据库文件,您可以按照上述步骤进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Android 用adb pull或push 拷贝手机文件到到电脑上,拷贝手机数据库到电脑上,拷贝电脑数据库到手机上](https://blog.csdn.net/weixin_39641103/article/details/111481364)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值