Android导入现有的数据库

Android 如何创建db文件(将excle表格中的数据导入db文件) 前言:前段时间一个在银行里上班的老同学,要考试了。找到我,问我能不能给他做一个小软件,他把题库考试题库给我(excle表格类型的),输入关键字能够快速查询出需要的题目。其实大家都懂的,就建立一个本地数据库,实现查询功能,看起来很简单,就答应了。但是看了表格,发现有单选题,多选题,对错题啥的,合起来有一万个题目,这要是用sqliteOpenHelper,然后使用代码插入数据,还不把人搞死了。所以就在 阅读详情

常用的路径写法

获取/system路径

Environment.getRootDirectory() ;

获取/cache路径

Environment.getDownloadCacheDirectory();

获取当前程序路径
context.getFilesDir().getAbsolutePath();

获取该程序的安装包路径

context.getPackageResourcePath();

获取程序默认数据库路径

context.getDatabasePath("city.db").getAbsolutePath();

内部存储路径:/data/data/youPackageName/,应用卸载时会被删除

"/data"+Environment.getDataDirectory().getAbsolutePath()+"youPackageName";

SD卡的跟路径

Environment.getExternalStorageDirectory().getAbsolutePath();

导入数据库

DBManager.java

public class DBManager {
    public static final String DB_NAME = "city.db";
    public static final String PACKAGE = "com.android.test";
    public static final String DB_PATH = "/data"+Environment.getDataDirectory().getAbsolutePath()+"/"+PACKAGE;

    private SQLiteDatabase database;
    private Context context;

    DBManager(Context context) {
        this.context = context;
    }

    public void openDatabase() {
        this.database = openDatabase(DB_PATH + "/" + DB_NAME);
    }

    private SQLiteDatabase openDatabase(String dbfile) {
        AssetManager assetManager = context.getAssets();
        File file = new File(dbfile);
        SharePreferenceUtil mSpUtil = SharePreferenceUtil.getSharePreferenceUtil(context);
        int version = mSpUtil.getVersion();
        try {
            //如果不存在或者第一次运行执行拷贝
            if (!file.exists() || version < 1) {
                //有两种方式可以读取
                //InputStream is = context.getResources().openRawResource(R.raw.city);
                InputStream is = assetManager.open(DB_NAME);
                FileOutputStream fos = new FileOutputStream(dbfile);
                byte[] buffer = new byte[1024];
                int length = -1;
                while ((length = is.read(buffer)) > 0) {
                    fos.write(buffer, 0, length);
                    fos.flush();
                }
                fos.close();
                is.close();
                mSpUtil.setVersion(1);
            }
            //打开database
            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;
    }


    public void closeDatabase() {
        this.database.close();
    }
}

SharePreferenceUtil.java

public class SharePreferenceUtil {
    private SharedPreferences sp;
    private SharedPreferences.Editor editor;
    private static SharePreferenceUtil mSpUtil;
    private static final String VERSION = "version";

    public SharePreferenceUtil(Context context, String file) {
        sp = context.getSharedPreferences(file, Context.MODE_PRIVATE);
        editor = sp.edit();
    }
    public static SharePreferenceUtil getSharePreferenceUtil(Context context) {
        if (mSpUtil == null)
            mSpUtil = new SharePreferenceUtil(context,"city");
        return mSpUtil;
    }

    public int getVersion() {
        return sp.getInt(VERSION, -1);
    }

    public void setVersion(int version) {
        editor.putInt(VERSION, version);
        editor.commit();
    }
}

上面的例子是将现有的数据库city.db导入到内部存储路径/data/data/com.android.test/下,其中有两种获取city.db的方式;

1、city.db放在assets目录下,直接通过context.getAssets().open("city.db")获取;

2、city.db放在res下的raw文件夹中,通过context.getResources().openRawResource(R.raw.city)获取;

两者区别:assets下的文件不会被编译,也就是说在R文件中无法找到,而raw文件夹中的文件会被编译,在R文件中能找到,因此可以使用R.raw.city去获取;

一般情况下像配置文件、数据量比较小的数据库文件在导入时可以导入到内部存储路径,当程序被卸载的时候会跟着被删除,一些较大的文件或动态的文件,比如聊天数据一般情况下可导入SD卡路径下自己生成一个文件夹中;



如需转载请注明出处:http://blog.youkuaiyun.com/zapperbot


Android 真机调试查看db数据库文件 在真机调试的时候想要adb查看手机上的db文件很麻烦 必须root手机获取超级权限才能进行adb查看/data/data/包名/databases/目录下的db文件   我们可以使用数据库可视化工具SQLiteStudio进行db文件的查看   一种方法是Device File Explorer导出db文件到电脑,然后用SQLiteStudio打开 不过对于频繁修改的数据,每次都要导出... 阅读详情

相关推荐

安卓db数据库查看工具——快速管理与分析SQLite数据库

SQLite 是 Android 内置的轻量级关系型数据库管理系统,为 Android 应用提供了一种高效、便捷的数据持久化方案。与传统的关系型数据库不同,SQLite 将数据库存储在文件系统中的单一文件内,从而简化了数据库的部署和管理。SQLite 支持标准的 SQL 语言,允许在没有服务器进程的情况下进行数据库操作,这使得它非常适合于资源有限的移动设备环境。在 Android 应用开发中,SQLite 数据库常用于本地数据存储、用户个性化设置记录以及应用内缓存。

weixin_32869687的博客 1941

Android 如何导入已有的外部数据库

/在手机里存放数据库的位置。(new File(dbfile).exists())) {  //判断数据库文件是否存在,若不存在则执行导入,否则直接打开数据库。//保存的数据库文件名。

2501_90328460的博客 528

CANdb++ Editor实战:5步搞定DBC文件信号布局与字节对齐(附常见错误排查)

本文详细介绍了使用CANdb++ Editor进行DBC文件信号布局与字节对齐的实战方法。通过五步法,深入解析Intel与Motorola字节序差异、跨字节信号布局规则,并借助Layout视图等工具,帮助工程师高效解决信号错位、数据解析错误等常见问题,确保CAN网络通信的准确性与可靠性。

solidity8miner的博客 695

Android如何导入外部已存在的数据库文件(附源码)

*以下经验,来源于个人在写项目的时候,遇到的问题.前些时间我正在做一个项目,由于项目需要用到已有的外部数据库文件。第一想法就是直接通过输入输出流将文件拷贝到database目录下,但是怎么样拷贝才算是比较好的呢?经过一波查阅API,Google,终于找到了比较好的办法,在这里将这个过程记录下来。1. 首先明确目标,要将桌面的data.sqlite文件导入并且在app中使用 2.然后在And

Gpwner的博客 7837

(二)MS-MPI多机通信

1.关于MPI多机通信 一台计算机处理数据的能力是有限的,MPI的主要作用就是用来实现并行计算机,即将多台主机联机,实现大规模、高性能的计算机机群。我们知道一台计算机同时运行多个进程时,由于计算机资源是共享的,多个进程都会占用一些资源,每个进程运行的效率就会降低,比如当一台计算机同时跑着多个大型应用时会变得非常卡顿。所谓多机通信,可以理解为将本应该在同一台主机上运行的多个进程分配到多台主机上,以往...

xinwuya_的博客 4392

相衬成像介绍

相衬成像介绍

qq_41981768的博客 2911

android数据库导入,Android项目中如何导入数据库

Android项目中如何导入数据库发布时间:2020-11-24 16:43:28来源:亿速云阅读:110作者:LeahAndroid项目中如何导入数据库?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。方法如下我们都知道 Android的 数据库默认是放在data\data\packageName\datbases\下的...

weixin_32973973的博客 1353

Visual Studio 命令提示符工具区别与使用场景

Visual Studio会提供一系列命令提示符工具,这些工具应用在哪些场景呢?本文进行了相关介绍。

cicada15的博客 3493

android导入外部数据,android导入外部数据库

在androidStudio中,右键项目的src,选择assets folder,然后把外部数据库放入改目录下: 然后新建一个类,名为ImportDB类,输入如下代码(亲测可用!)public class ImportDB {private final int BUFFER_SIZE = 400000;public static final String DB_NAME = "studb.db";...

weixin_33258874的博客 1121

Java 大视界 -- Java+Spark MLlib 构建智能推荐系统:协同过滤算法实战与优化(441)

Java+Spark MLlib构建智能推荐系统实战 本文详细介绍了基于Java和Spark MLlib构建协同过滤推荐系统的全流程实践方案。主要内容包括: 架构设计:采用离线批处理为主、近实时更新为辅的架构,包含数据采集层、处理层、模型层、推荐生成层、存储层和应用层六大模块,可支撑千万级用户推荐需求。 技术实现: 使用Spark MLlib的ALS算法进行协同过滤模型训练 提供数据清洗、模型训练、推荐生成等核心代码实现 采用MySQL存储推荐结果,支持批量插入和事务保障 生产级优化: 版本化模型存储规避覆

【青云交】华为云云享专家 | 阿里云开发者社区专家博主 技术圈个人影响力前 9 | 博客之星 TOP12 优快云 首位四榜(原力榜 / 作者周榜 / 领军人物 / 综合热榜)榜首,破平台纪录! 苏州地区全榜霸榜,感恩全网十多万粉丝同行! 2527

电力负荷预测 | 电力系统负荷预测模型(Python线性回归、随机森林、支持向量机、BP神经网络、GRU、LSTM)

电力负荷预测 | 电力系统负荷预测模型(Python线性回归、随机森林、支持向量机、BP神经网络、GRU、LSTM)

天天酷科研的博客 3188

2024年Android最全Android 如何导入已有的外部数据库,网络工程师面试题

网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了上述安卓开发高级工程师面试题以及答案。希望帮助大家顺利进阶为高级工程师。目前我就职于某大厂安卓高级工程师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来。大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解。现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕。

2301_82242426的博客 1229

【29】软考软件设计师——SQL语句编写与优化深度精讲|数据库大题延伸满分攻略

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第29篇,承接第28篇ER图转关系模式核心内容,作为**下午第2题数据库大题核心延伸必考模块**,单模块累计占分5~8分,是数据库板块性价比极高的提分重点。全文超4000字深度拆解软考全部SQL高频考点:全覆盖多表连接底层逻辑、嵌套子查询分类实操、GROUP BY分组聚合硬核规则、索引全品类设计原理、联合索引最左匹配底层机制,搭配海量可直接复刻的考场SQL模板、历年真题完整改写案例、索引失效场景实操复盘、慢查询优化落地技巧。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 524

android导入外部数据库,Android导入现有的数据库方法示例

前言大家在平时见到的android数据库操作一般都是在程序开始时创建一个空的数据库,我们然后在进行相关操作。这个我们就比较好做了,因为这个数据库是我们一开始就跟着这个应用走的,那么我们有的时候不可能什么都是自己去做的。我们要是需要使用一个已有数据的数据库怎么办呢?大家想一想在android系统下数据库应该存放在什么地方呐,我们要是知道数据库存放在什么地方就好办了,现在大家有没有思路了。没有的话,下...

weixin_35304361的博客 548

SAP 实例解析分期付款配置及应用

SAP系统的付款条件支持分期付款功能,其奥妙之处就在于需要定义一个母条款和一个子条款,其中,母条款需要标识“分期付款”。 首先,定义分期付款的母条款OBB8:             然后,定义子条款(即分期付款的具体方式)OBB9:   由上图可以看出,分期付款的配置还是很强大的,针对每次付款,都可以进行第二层次付款条件的设置。   然后,我们做一笔发票,

heng0757的专栏 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Android开发 SQLite 通过.db文件导入已有数据库

见过几次Android数据库操作,貌似都是在程序开始时建一个空数据库,然后进行操作。 那,如果想要用一个已有的数据库怎么办? 因为Android系统下的数据库是存放在/data/data/com.*.*(package name)/目录下,所以我们可以这样:1.将.db文件放到项目源码的res/raw目录下; 2.用FileInputStream读取原数据; 3.用FileOu

Emperor_rock的专栏 4444

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

在Android程序中使用已有的SQLite数据库

在之前做的联系人项目中,应用安装完以后需要显示数据库中预存的数据,这时需要导入已有的数据库contact.db。这也是一个面试题,那么如何实现呢? 首先在res中新建raw文件夹,res\raw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。那么如何把raw文件下面的数据库文件contact.db导入到Android程序中的database目录下呢? 下面提供一个导入现有数据库的工具类:

Veer Han 3294

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

sqlite3 导入android,如何将现有的SQLite表导入Android Room?

我正在开发一个琐事应用程序,我已经完成了在应用程序中实现Room Persistence,但是我无法找到信息,我可以从我随应用程序一起提供的SQLite数据库文件中导入现有表.解决方法:这似乎有点晚了,但我通过这个解决方案解决了这个问题.在初始化房间数据库之前,需要将现有的sqlite db文件复制到/ data / data / {your package name} / databases目录...

weixin_30301989的博客 295

mono for Android导入已有数据库到项目中

近几个月在用mono for Android开发Android项目,遇到了不少问题。毕竟跟原生的Java Android相比,参考资料有限,所以打算把一些在项目中遇到的问题整理下来,做个记录。 今天记录的是导入已有的数据库,在Android项目中,一般都是新建一个数据库,然后进行使用。但是,要是想要使用已有数据库,必须把数据库重新写入到文件中。 1.把数据库文件放入到Assets文件夹下。 2.获

人生何处不相逢 515

android sqlite 添加多个表,Android的 - 导入多个.CSV文件在SQLite数据库的多个表(Android - Impo...

我在我的Android设备有多个.CSV文件的文件夹。我想所有的人都导入到我的SQLite数据库,但每个文件必须是不同的表。所有的.csv文件中简单。 他们只有一个列。例:FILE.CSV1234512300000000AnotherFile.CSVXXXXXZZZZZZZZZZFFFF这里是我的方法,它是行不通的。 我不明白为什么:@TargetApi(Build.VERSION_CODES...

weixin_34237125的博客 304

安卓获取本地时间插入sqlite_Android开发小结Part11:SQLite 通过.db文件导入已有数据库...

见过几次Android数据库操作,貌似都是在程序开始时建一个空数据库,然后进行操作。那,如果想要用一个已有的数据库怎么办?因为Android系统下的数据库是存放在/data/data/com.*.*(package name)/目录下,所以我们可以这样:1.将.db文件放到项目源码的res/raw目录下;2.用FileInputStream读取原数据;3.用FileOutPutStream把读取到...

weixin_39762441的博客 201

SQLite 通过.db文件导入已有数据库

见过几次Android数据库操作,貌似都是在程序开始时建一个空数据库,然后进行操作。 那,如果想要用一个已有的数据库怎么办?因为Android系统下的数据库是存放在/data/data/com..(package name)/目录下,所以我们可以这样:1.将.db文件放到项目源码的res/raw目录下; 2.用FileInputStream读取原数据; 3.用FileOutPutStream把

zchuanzhao的专栏 1822

[Android]如何导入已有的外部数据库

我们平时见到的android数据库操作一般都是在程序开始时创建一个空的数据库,然后再进行相关操作。如果我们需要使用一个已有数据的数据库怎么办呢? 我们都知道android系统下数据库应该存放在 /data/data/com.*.*(package name)/ 目录下,所以我们需要做的是把已有的数据库传入那个目录下。操作方法是用FileInputStream读取原数据库,再用FileOutput

ssstudio的专栏 4540

使用Android Studio导入已有的SqlLite外部数据库(虚拟机和手机通用)

当你在写一个需要连接数据库的APP的时候,可能你一打开虚拟机或者你的手机会出现这样的空白 这个时候你可能就会怀疑你的代码是不是有问题了,别着急这种情况很可能就是你的数据库没添加到虚拟机或者手机里面去,下面就是导入数据库的完整步骤了。 首先打开你的虚拟机 然后点击菜单栏View——>Tools windows——>Device File Explorer(如果不打开虚拟机的话点开会没反应连接手机的话就可以点开了) 这个时候你就会看到原来虚拟机的地方就会出现很多文件 然后导

qq_52296067的博客 2134

Android访问外部DB文件

注:本文代码参考了网上的例子,忘了什么地址了,所以无法提供说明,原作者看到勿怪,可以提醒我加上。   有时候自己导入DB文件进行操作,和访问本地数据库有点差异。 首先在res下建立一个文件夹raw,然后把DB文件导入进去 然后写一个方法获取SQLiteDatabase private static SQLiteDatabase database; public static final

氵白的专栏 1万+

Android如何导入已有的外部数据库(在raw下自己导入db文件)

我们平时见到的android数据库操作一般都是在程序开始时创建一个空的数据库,然后再进行相关操作。如果我们需要使用一个已有数据的数据库怎么办呢? 我 们都知道android系统下数据库应该存放在 /data/data/com.*.*(package name)/ 目录下,所以我们需要做的是把已有的数据库传入那个目录下。操作方法是用FileInputStream读取原数据库,再用 ...

weixin_34095889的博客 1212
上一篇: Intellij IDEA开发环境设置
下一篇: 使用Jsoup 抓取页面的数据
老牛斯坦森
博客等级 码龄11年 8粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值