Android studio引入外部SQLite数据库,获取数据库列表数据

Android Studio|使用SqLite实现一个简单的登录注册功能 Android Studio 是开发 Android 应用程序的官方 IDE,基于 Intellij IDEA。你可以从官网Android Studio下载下载最新版本的 Android Studio。在项目开始之前,请确认已经安装好Android Studio和完成相关的环境配置。SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。他有诸多的优点。 阅读详情
AI摘要

本文详细介绍了如何在Android Studio项目中导入并使用SQLite数据库。首先,准备SQLite数据库并创建数据库类MyDatabaseHelper。然后,在assets目录下放置SQLite文件,并在onCreate()方法中调用数据库导入方法。此外,还展示了如何获取数据库数据,创建对应数据类UserDemo,以及从数据库中获取User数据的步骤。

准备工作:

准备好Android studio和一个创建管理数据库的软件,推荐SQLite Expert Professional或者Navicat Premium。这里以SQLite Expert Professional为例。

创建外部数据库:

1.穿件sqlite数据库,按照自己的项目要求定义数据库和相应的数据表

导入数据库到Android studio项目中

1.在main目录下创建assets文件,将准备好的sqlite数据库文件放入这个目录下

解释:assets文件夹下的文件在应用被打包成apk时不会被压缩

2.在main目录下的java目录下的com.example.xxxx包内创建一个java类,用于管理数据库,如图所示的MyDatabaseHelper

 3.在数据库的类中完成数据库的导入

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;


public class MyDatabaseHelper {

    //导入的sqlite数据库文件名
    private final String DB_NAME = "questionCenter.db";
    private SQLiteDatabase myDatabase;
    private Context context;

    //定义类的方法
    public MyDatabaseHelper(Context context) {
        this.context = context;
    }





    // 复制和加载区域数据库中的数据
    public String CopyDBFile() throws IOException {

        // 在第一次运行应用程序时,加载数据库到data/data/当前包的名称/database/数据库名字
        //获取准确的路径,context.getPackageName()得到包名
        File dir = new File("data/data/" + context.getPackageName() + "/databases");
        //如果文件夹不存在,则创建指定的文件
        if (!dir.exists() || !dir.isDirectory()) {
            dir.mkdir();
        }
        //文件声明
        File file = new File(dir, DB_NAME);
        //输入流
        InputStream inputStream = null;
        //输出流
        OutputStream outputStream = null;
        //若不存在,通过IO流的方式,将assets目录下的数据库文件,写入到项目模拟手机中,当开启模拟 
        //器时,会将数据库文件写入到模拟手机的内存中
        if (!file.exists()) {
            try {
                //创建文件
                file.createNewFile();
                //加载文件
                inputStream = context.getClass().getClassLoader().getResourceAsStream("assets/" + DB_NAME);
                //输出到文件
                outputStream = new FileOutputStream(file);

                byte[] buffer = new byte[1024];
                int len;
                //按字节写入
                while ((len = inputStream.read(buffer)) != -1) {
                    outputStream.write(buffer, 0, len);
                }


            } catch (IOException e) {
                e.printStackTrace();

            } finally {
                //关闭资源
                if (outputStream != null) {

                    outputStream.flush();
                    outputStream.close();

                }
                if (inputStream != null) {
                    inputStream.close();
                }

            }

        }

        return file.getPath();
    }
}

4.打开自己安卓项目运行时的第一个Activity,在对应的oncreate()方法,使用数据库类中定义的数据库导入的方法,完成数据库的初始化操作

注意:不一定是在第一个Activity中,但必须是在项目使用数据库之前的那个Activity中导入数据库

 //导入数据库到创建的文件中
MyDatabaseHelper myHelper = new MyDatabaseHelper(WelcomeActivity.this);
        try {
            myHelper.CopyDBFile();
        } catch (IOException e) {
            e.printStackTrace();
        }

在如图位置:

5.在对应的Activity的oncreate()方法中使用如图的代码可打开数据库,进行crud操作,增删查改、获取数据库数据

 获取数据库数据:(使用list集合)

1.在项目里面定义一个java类,用于定义数据表对应的列名。如用户表为例:

 对应的用户类的代码如下:

public class UserDemo {
    //对应userInfo数据库中的数据信息
    public String username;
    public String password;
    public  String savepsd;
    public String autologin;
    public String isregister;
    public int lastscore;

}

 2.按照自己的要求获取数据表的信息数据

 //获取数据库的用户数据
    public List<UserDemo> getUsers(){
        List<UserDemo> list=new ArrayList<UserDemo>();
        //这是获取完整数据表信息的方法
        Cursor cursor = myDatabase.query("userInfo.db",null,null,null,null,null,null);
        //也可以使用Cursor对象的rawQuery方法,使用sql指定的数据
        //Cursor cursor = myDatabase.rawQuery("select * from userInfo",null);
        if(cursor.getCount()>0){
            cursor.moveToFirst();//将cursor移动到第一个光标上
            int count=cursor.getCount();
            //将cursor中的每一条记录生成一个question对象,并将该question对象添加到list中
            for(int i=0;i<count;i++){
                cursor.moveToPosition(i);
                UserDemo users =new UserDemo();
                users.username=cursor.getString(cursor.getColumnIndex("username"));
                users.lastscore=cursor.getInt(cursor.getColumnIndex("lastscoren"));
                users.password=cursor.getString(cursor.getColumnIndex("password"));
                users.autologin=cursor.getString(cursor.getColumnIndex("autologin"));
                users.savepsd=cursor.getString(cursor.getColumnIndex("savepsd"));
                users.isregister=cursor.getString(cursor.getColumnIndex("isregister"));
                list.add(users);
            }
           // System.out.println(list.get(2)); //可输出list集合的数据
        }
        return list;
    }

3.通过集合获取到数据后,可以按照自己的要求进行相应的功能实现

如果需要对导入的数据库进行操作,可参照外部sqlite数据库导入后对数据库进行操作https://blog.youkuaiyun.com/NXBBC/article/details/123734221?spm=1001.2014.3001.5502

Android Studio + sqllite 数据库连接的步骤以及常见问题 Android Studio + sqllite 数据库连接的步骤以及常见问题一、连接步骤1、打开Android studio 创建一对Activity,2、书写相关代码3、创建一个Mydatabase的一个Java类。4、运行5、启动monitor连接数据库1、打开SDK后,查看SDK路径2、在SDK路径下右键鼠标运行命令行,输入命令monitor,即可启动Android monitor Device如下图所示:6、使用模拟器运行的界面进行操作可能出现的问题1、执行后前台显示成功,数据库里面的refres 阅读详情

相关推荐

Android Studio连接mysql数据库方法

mysql的配置、Navicat的配置、Android Studio的配置

qq_51135645的博客 1万+

Android studio 中使用sqlite

你可以根据自己的需求进行更复杂的操作,比如使用参数化查询、使用。类中,我们设置了数据库的版本号。每当你对数据库结构进行更改时(比如添加新表或修改表结构),都应该适当地增加版本号,并在。这样可以确保在应用程序更新时,旧版本的数据库可以正确地升级到新版本。: 执行不需要返回结果的 SQL 查询,例如插入、更新或删除操作。如若无法通过版本号更新数据库,建议更改数据库名称重新建数据库。在构造函数中,我们指定了数据库的名称和版本号。方法中,我们执行创建数据库表的 SQL 查询。在需要使用数据库的地方,创建。

qq_39213506的博客 4106

Android单词本App开发实战:SQLite与RecyclerView核心解析

在Android开发学习中,数据持久化是构建工具类应用的基础能力。SQLite作为系统内置的轻量级数据库,通过SQL语句即可完成增删改查,非常适合存储单词等结构化数据。而RecyclerView凭借ViewHolder复用机制,能高效渲染长列表,保障页面滑动流畅。本文以经典的单词本期末大作业为例,围绕四大组件、数据库操作、列表适配与页面传值等核心环节,梳理从项目结构到具体编码的实现思路,并针对常见问题提供排查建议,帮助开发者快速掌握实用技能。

aodiyi6351的博客 504

Android Studio使用SQLite数据库

Android Studio使用SQLite数据库

qq_49623539的博客 1万+

Android Studio开发入门:从零构建MVVM架构记事本App实战

在移动应用开发领域,数据持久化与高效UI渲染是核心基础。SQLite作为Android内置的关系型数据库,通过Room Persistence Library等ORM框架,开发者能以面向对象的方式安全操作本地数据,实现结构化存储。结合RecyclerView组件,可构建高性能列表界面,利用其ViewHolder模式实现视图回收,保障大量数据下的流畅滚动。MVVM(Model-View-ViewModel)架构模式将数据逻辑、界面展示与业务状态分离,通过LiveData或StateFlow实现数据驱动UI更新

weixin_34241036的博客 347

Android Studio无数据库版个人信息注册页面:从界面搭建到SharedPreferences持久化实操

在Android开发学习路径中,注册与登录功能是绕不开的实战起点。很多新手一接触注册页面就被SQLite、Room等数据库概念劝退,却忽略了表单界面搭建、输入校验、数据封装与页面状态传递这些更基础且核心的技术环节。实际上,数据存储只是功能链路中的一环,而SharedPreferences作为一种轻量级键值对持久化方案,非常适合保存用户偏好、登录状态和小体积结构化数据。理解它的工作原理,即XML文件读写与异步提交机制,能帮助开发者快速实现“记住上次注册信息”这类典型应用场景。本文以Android Studio

weixin_34006965的博客 344

#3,Android Studio Android开发APP的开发语言和APP连接的数据库 总结

基于安卓系统的App开发主要有两大技术路线,分别是原生开发和混合开发。原生开发指的是在移动平台上利用官方提供的编程语言(例如Java、Kotlin等)、开发工具包(SDK)、开发环境(Android Studio)进行App开发;

小超嵌入式笔记 8730

邻家书苑Android源码拆解:Java+SQLite图书管理项目实战

在Android原生开发中,SQLite作为轻量级嵌入式数据库,是本地数据持久化的核心技术,通过SQLiteOpenHelper管理建表与版本升级,支撑图书信息的增删改查。合理使用RecyclerView与Glide加载列表封面,能有效减少内存占用,避免OOM崩溃。一个典型的图书管理项目,从UI交互到数据流转,往往涵盖Activity跳转、Intent传值、Adapter适配、DAO封装等基础知识点。以“邻家书苑”为例,它定位于离线轻量的阅读工具,聚焦图书展示、搜索、详情、收藏与阅读记录,非常适合作为毕业设

weixin_33924770的博客 285

Android开发笔记(一百八十六)管理SQLite的利器——应用检查器App Inspection

从Android Studio Bumblebee开始,Android Studio正式全面开启了数据库管理功能。首先确保已经安装了最新版的Android Studio Bumblebee,打开电脑上的Android Studio,并通过USB数据线连接待调试的设备(设备上同时启动待调试的应用)。然后依次选择菜单“View”→“Tool Windows”→“App Inspection”,Android Studio界面下方会弹出“App Inspection”窗口。...

aqi00的博客 3074

邻家书苑Android源码拆解:Java与SQLite构建社区图书借阅闭环

在Android原生开发中,数据持久化与业务状态管理始终是构建实用App的核心能力。本文以一款基于Java语言的社区图书借阅应用为例,解析如何利用SQLite完成用户、图书、借阅记录的表结构设计,并通过状态机驱动借阅流程的完整闭环。从RecyclerView列表优化到FileProvider适配,从AndroidX迁移到内存泄漏规避,梳理了Java版Android项目从环境配置到功能实现的关键路径。对于需要快速理解真实业务型App架构的开发者,这份源码展示了不依赖后端服务、纯本地单机的实现方案,其状态流转与

weixin_30719711的博客 330

基于Android+Java的邻家书苑书城App源码设计详解

移动应用开发中,Android平台凭借其开放性与生态优势,成为众多开发者入门与实战的首选方向,而Java语言作为其经典底层支撑,至今仍是理解原生开发逻辑的基石。在构建书城类应用时,数据持久化与架构分层往往决定项目的可维护性与扩展性。SQLite作为Android内置的轻量级关系型数据库,以零配置、高性能的特性承载用户、书籍、购物车及订单等结构化数据;MVP架构则通过隔离视图与业务逻辑,让代码更清晰、更易测试。围绕“邻家书苑”这一开源示例,文章从用户注册登录、图书浏览、RecyclerView列表展示,到购物

weixin_30565327的博客 410

Android记事本开发实战:从SQLite到RecyclerView的完整项目解析

在移动应用开发中,数据持久化是核心基础技术之一,它决定了应用如何存储和管理用户数据。其原理通常涉及本地数据库操作,如使用SQLite进行结构化数据存储,并通过CRUD(增删改查)接口实现数据管理。这项技术的价值在于为应用提供稳定、高效的离线数据支持,是构建功能完整应用的关键。在Android开发领域,数据持久化广泛应用于笔记、待办事项、通讯录等需要本地存储的场景。本文聚焦于一个经典的Android记事本应用实现,详细拆解了如何使用原生SQLite和RecyclerView构建一个具备完整CRUD功能的应用。

weixin_30753873的博客 349

掌握安卓开发:从日记本应用起步

本文还有配套的精品资源,点击获取 简介:该压缩包提供了安卓日记本应用的源代码,用户可安装体验。通过研究应用的代码,开发者可熟悉Android Studio、Kotlin语言、安卓应用结构、UI设计、数据存储等关键技能。本项目采用Kotlin编写,以实践方式引导开发者掌握安卓开发的核心概念和工具,包括布局文件、Gradle构建系统和调试技巧。 1. Android St...

weixin_33245447的博客 1097

如何自己开发一个Android APP(5)——数据处理

如题

RK_Dangerous的博客 1031

Android服药提醒App开发全解析:从SQLite数据库到AlarmManager精准提醒

在移动应用开发领域,本地数据存储与后台任务调度是构建可靠工具类App的核心技术。SQLite作为Android平台内置的轻量级关系型数据库,以其零配置、无需网络、单文件存储的特性,成为存储结构化用户数据(如药品信息、提醒计划)的理想选择。其通过表关系设计与事务机制,能有效保障数据的一致性与完整性,为应用提供稳定的“记忆中枢”。而AlarmManager则是实现精准定时任务的关键系统服务,它允许开发者在系统级别设置跨应用生命周期的定时器,尤其适用于服药提醒、日程通知等对时效性要求严格的场景。通过结合Broad

weixin_30613727的博客 452

一种基于改进YOLOv8并与ORB-SLAM3融合的动态环境密集点云同步定位与建图(SLAM)方法

文章提出了一种基于改进 YOLOv8 与 ORB-SLAM3 融合的动态环境稠密点云 SLAM 方法,通过引入GSConv 卷积模块和VoVGSCSP 特征融合模块优化 YOLOv8 的轻量性,结合实时目标检测与语义分割技术去除动态特征点,显著提升了动态场景下的位姿估计精度。

2401_87345388的博客 1938

Android开发

为了记录学习安卓开发的过程,也为了后续深入学习,现将自己搭建的开发demo进行分享

vvvhx的博客 1466

CAD的.dwg文件导入 ArcGIS:高程分析、坡度分析、坡向分析

CAD的.dwg文件导入 ArcGIS,再进行高程分析、坡度分析、坡向分析。

My_Echo_yM的博客 7234

Android记事本开发实战:从MVC架构到APK打包的完整指南

在Android应用开发中,数据持久化是核心基础技术之一,它决定了应用如何高效、可靠地存储和管理用户数据。其原理通常涉及本地数据库、文件系统等存储方案,其中SQLite作为Android内置的关系型数据库,因其轻量、无需服务器和原生支持SQL查询而成为结构化数据存储的首选。掌握数据持久化技术对于构建任何需要离线工作或快速数据检索的应用都具有重要价值,尤其在笔记、待办事项、个人账本等工具类应用场景中尤为关键。本文以开发一个Android记事本应用为具体案例,深入解析了如何使用SQLiteOpenHelper实

weixin_34197488的博客 477

海康威视摄像头网线连接笔记本电脑,客户端提示:1连接设备失败。设备不在线或网络原因引起的连接超时等。(HCNetSDK.dll[7].)解决方案

1.环境 电脑:联想笔记本电脑(win10系统) 摄像头:海康威视DS-2CD3T20D-i5,4mm 连接方式:直接用网线将摄像头和摄像头连接 2.问题: 客户端出现如下提示: 3. 解决流程: 1.确认网线是否有问题:我的网线指示灯常亮,并且设备能够被搜索到,只是一直显示离线 2.按照网上教程直接配置摄像头的ip地址与电脑同一网段:登录失败。 错误码为 HCNetSDK.dll[7].(连接设备失败。设备不在【海康威视吧】_百度贴吧 失败了,没有反应 3.查看有线网卡的地

weixin_48911487的博客 3万+

PyTorch实战:3D U-Net医学图像分割从零搭建(附完整代码)

本文详细介绍了如何使用PyTorch从零搭建3D U-Net模型进行医学图像分割,涵盖三维卷积实现、模块化架构设计、医学图像专属优化策略及完整训练流程。通过实战代码演示,帮助开发者掌握UNet-3D在CT、MRI等三维医学图像分割中的应用,提升肝脏肿瘤分割、肺结节检测等任务的准确性。

weixin_29061997的博客 329

3分钟搞定Android Studio集成LitePal:从Gradle配置到混淆规则全攻略

你是否还在为Android项目中的数据库操作繁琐而头疼?还在手动编写SQL语句和ContentProvider吗?本文将带你3分钟内完成LitePal的集成配置,让数据库操作像操作普通Java对象一样简单。读完本文你将掌握:Gradle依赖添加、配置文件创建、混淆规则设置以及常见问题解决方案。 ## 什么是LitePal LitePal是一个开源的Android轻量级ORM(对象关系映射)框架...

gitblog_00953的博客 1223

【无线通信】射频杂散(RF Spurious Emissions)

射频杂散(RF Spurious Emissions)是指在无线通信系统中,除了在指定频率范围内的预期信号之外,任何不需要的或非预期的射频信号。这些杂散信号可能会干扰其他通信系统,降低系统性能,并违反无线电通信法规。射频杂散通常包括谐波、次谐波、互调产物和其他非线性失真所产生的信号。

qq_38801607的博客 5424
上一篇: Js实现复杂计算和简单运算,以及函数传递任意多个参数的参数的方法
下一篇: Android studio导入外部sqlite数据库后对数据库进行修改和操作
星光宇辰
博客等级 码龄7年 902粉丝 25原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值