安卓开发之数据库的创建与删除

news2024/12/22 23:45:31

目录

  • 前言:
  • 基础夯实:
    • 数据库的创建
    • 数据库的删除
    • 注意事项
  • 效果展示:
  • 遇到问题:如何在虚拟机里面找到这个文件
    • 首先,找到虚拟机文件的位置
    • 其次,找到数据库文件的位置
  • 核心代码:

前言:

安卓开发中数据库是很重要的模块,本文简单介绍数据库的创建与删除,并展示如何查找数据库的位置,这个位置,我一开始挺懵,网上查资料,但是没有找到路径,最后在看到虚拟机上有路径,所以分享本文。

基础夯实:

在安卓开发中,数据库的创建与删除是数据管理的基础操作。以下是对这两个方面理论知识的详细阐述:

数据库的创建

SQLite数据库简介:
SQLite是一个轻量级的嵌入式关系型数据库管理系统,它占用资源非常低,在嵌入式设备中广泛使用。SQLite通过文件来保存数据库,一个文件就是一个数据库,数据库中又包含多个表格,表格里又有多条记录,每个记录由多个字段构成,每个字段有对应的值。

创建SQLite数据库:
在安卓开发中,通常通过继承SQLiteOpenHelper类来创建和管理SQLite数据库。SQLiteOpenHelper是一个帮助类,用于管理数据库的创建和版本管理。当数据库第一次被创建时,会调用onCreate(SQLiteDatabase db)方法来初始化数据库表结构。如果数据库的版本号发生变化,则会调用onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法来更新数据库表结构。

创建数据库表:
在onCreate方法中,通过执行SQL语句来创建数据库表。SQL语句通常包括表的名称、字段名称、字段类型以及字段的约束条件等。

数据库的删除

删除数据库中的表:
可以通过执行DROP TABLE语句来删除数据库中的表。在执行此操作之前,需要确保已经打开了数据库连接,并且具有相应的权限。

删除数据库中的记录:
可以通过执行DELETE语句来删除数据库中的记录。DELETE语句通常包括要删除的表的名称以及删除条件。删除条件用于指定哪些记录应该被删除。

删除整个数据库文件:
如果需要删除整个数据库文件,可以通过获取数据库的上下文(Context),然后使用deleteDatabase(String name)方法。其中,name参数是数据库文件的名称(不包括路径)。

注意事项

权限问题:
在安卓开发中,访问和修改数据库需要相应的权限。确保在AndroidManifest.xml文件中已经声明了必要的权限,如READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE等(具体权限根据实际需求而定)。

数据备份:
在进行删除操作之前,最好先进行数据备份,以防止误删导致数据丢失。数据备份可以通过多种方式实现,如将数据导出到文件、云存储等。

事务处理:
在进行数据库操作时,特别是涉及多个表的更新或删除时,建议使用事务处理来提高效率和安全性。事务处理可以确保一系列操作要么全部成功,要么全部失败并回滚到原状态。

异常处理:
在进行数据库操作时,可能会遇到各种异常,如SQLException等。因此,应该使用异常处理机制来捕获和处理这些异常,以确保程序的稳定性和可靠性。

综上所述,安卓开发中数据库的创建与删除涉及多个方面,包括SQLite数据库的基础知识、创建和删除数据库表的方法、删除数据库记录的方式以及注意事项等。掌握这些理论知识对于进行高效的安卓开发至关重要。

效果展示:

创建效果:
在这里插入图片描述
删除效果:
在这里插入图片描述

遇到问题:如何在虚拟机里面找到这个文件

首先,找到虚拟机文件的位置

在这里插入图片描述

其次,找到数据库文件的位置

按照你的生成路径进行查找,我一开始,自己随便找,文件太多了,根本找不到。
在这里插入图片描述

核心代码:

数据库创建活动文件:

package com.example.text06;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class DatabaseActivity extends AppCompatActivity implements View.OnClickListener {

    private TextView tvDatabase;
    private String databaseName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_database);
        tvDatabase = findViewById(R.id.tv_database); // 初始化TextView
        findViewById(R.id.btn_database_create).setOnClickListener(this);
        findViewById(R.id.btn_database_delete).setOnClickListener(this);
        databaseName = getFilesDir() + "/test1241024.db";
    }

    @Override
    public void onClick(View v) {
        String desc = null;
        switch (v.getId()) {
            case R.id.btn_database_create:
                // 创建或者打开数据库
                SQLiteDatabase db = openOrCreateDatabase(databaseName, Context.MODE_PRIVATE, null);
                desc = String.format("数据库%s创建%s", db.getPath(), (db != null) ? "成功" : "失败");
                tvDatabase.setText(desc);
                db.close(); // 关闭数据库连接
                break;

            case R.id.btn_database_delete:
                // 删除数据库
                boolean result = deleteDatabase(databaseName);
                desc = String.format("数据库%s删除%s", databaseName, result ? "成功" : "失败");
                tvDatabase.setText(desc);
                break;
        }
    }
}

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn_database_create"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="建立数据库"
            android:textColor="@color/black"
            android:textSize="17dp" />

        <Button
            android:id="@+id/btn_database_delete"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="删除数据库"
            android:textColor="@color/black"
            android:textSize="17dp" />

    </LinearLayout>

    <TextView
        android:id="@+id/tv_database"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:text="数据库"
        android:textColor="@color/black"
        android:textSize="17dp" />

</LinearLayout>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2231813.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SSM+微信小程序的订餐管理系统(点餐2)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的订餐管理系统实现了管理员和用户。管理端实现了 首页、个人中心、用户管理、菜品分类管理、菜品信息管理、订单信息管理、配送信息管理、菜品评价管理、订单投诉管理、…

《AI在企业战略中的关键地位:以微软和阿里为例》

内容概要 在当今商业环境中&#xff0c;人工智能&#xff08;AI&#xff09;的影响力如滔滔洪水&#xff0c;愈演愈烈。文章将揭示AI在企业战略中的崛起&#xff0c;尤其以微软和阿里巴巴为代表的企业&#xff0c;这两家科技巨头通过不同方式&#xff0c;将智能技术融入其核心…

华为荣耀曲面屏手机下面空白部分设置颜色的方法

荣耀部分机型下面有一块空白区域&#xff0c;如下图红框部分 设置这部分的颜色需要在themes.xml里面设置navigationBarColor属性 <item name"android:navigationBarColor">android:color/white</item>

【ESP32】ESP-IDF开发 | I2C从机接收i2c_slave_receive函数的BUG导致程序崩溃解决(idf-v5.3.1版本)

1. 问题 在调试I2C外设的demo时&#xff0c;按照官方文档的描述调用相关API&#xff0c;烧录程序后发现程序会不断崩溃&#xff0c;系统log如下。 初步分析log&#xff0c;原因是访问到了不存在的地址。一开始我以为是自己的代码问题&#xff0c;反反复复改了几次都会出现同样的…

企业数字化转型实施中的挑战与解决方案:架构引领的战略路径

在企业推动数字化转型的过程中&#xff0c;通常会面临复杂的挑战。随着技术的不断演进和业务环境的变化&#xff0c;企业架构&#xff08;Enterprise Architecture, EA&#xff09;成为帮助企业应对这些挑战的关键工具。通过提供一个全面的战略蓝图&#xff0c;EA使企业能够在保…

桑基图在医学数据分析中的更复杂应用示例

桑基图&#xff08;Sankey Diagram&#xff09;能够有效地展示复杂的流动关系&#xff0c;特别适合用于医学数据分析中的多种转归和治疗路径的可视化。接下来&#xff0c;我们将构建一个稍微复杂的示例&#xff0c;展示不同疾病患者在治疗过程中的流动&#xff0c;以及他们的治…

[SICTF Round4] PWN

这PWN题似乎是给我出的&#xff0c;4个一血1个2血。密码又过于简单。逆向太难了又不大会。 Stack fengshui main可以溢出覆盖rbpret所以它每一步都需要移栈。 可用的ROP里没有pop rdi,在4004c0里有错位的01 5d c3 &#xff1a;add DWORD PTR [rbp-0x3d], ebx 并且有对应的p…

消息中间件类型介绍

ActiveMQ&#xff1a; ActiveMQ可是个老将了&#xff0c;它功能全面、稳定可靠&#xff0c;还支持多种协议和编程语言。如果你需要一个兼容性好、易于集成的消息中间件&#xff0c;ActiveMQ可是个不错的选择。 RabbitMQ&#xff1a; RabbitMQ以其简单易用和高性能著称。它支持丰…

【设计模式系列】组合模式(十二)

目录 一、什么是组合模式 二、组合模式的角色 三、组合模式的典型应用 四、组合模式在Mybatis SqlNode中的应用 4.1 XML映射文件案例 4.2 Java代码使用案例 一、什么是组合模式 组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;其核…

Ghidra无头模式(自动化批处理执行重复性任务)

Ghidra无头模式&#xff08;自动化批处理执行重复性任务&#xff09; 与Ghidra GUI探索单个项目中的单个文件不同&#xff0c;Ghidra headless analyzer&#xff08;Ghidra无头分析器&#xff09;更加适合批处理和用脚本控制Ghidra。 &#xff08;一&#xff09;启动analyzeHea…

【大众点评】店铺评论 加密参数生成逆向分析

点击好评 https://www.dianping.com/ajax/json/shopDynamic/allReview 分析参数_token 直接搜_token 共17个&#xff0c;优先看和请求相关的 给第一个_token打上断点&#xff0c;然后切换评论&#xff0c;就直接断住了 n h(i, e.sendData) _token: n 现在给它打上断点&am…

Fsm3

采用读热码编写方式&#xff1a; module top_module(input clk,input in,input areset,output out); ////reg [3:0]A 4d0001;// reg [3:0]B 4d0010;//reg [3:0]C 4d0100;// reg [3:0]D 4d1000; //1、首先用读热码定义四个状态变量parameter A 4d0001 ,B 4d0010, C 4d01…

在腾讯云服务器上部署MaxKB项目(基于LLM大语言模型的知识库问答系统)

前言 一&#xff0c; MaxKB介绍 MaxKB是基于LLM大语言模型的知识库问答系统&#xff0c;旨在成为企业的最强大脑。它支持开箱即用&#xff0c;无缝嵌入到第三方业务系统&#xff0c;并提供多模型支持&#xff0c;包括主流大模型和本地私有大模型&#xff0c;为用户提供智能问…

【大众点评】加密参数生成逆向分析

点击好评 https://www.dianping.com/ajax/json/shopDynamic/allReview 分析参数_token 直接搜_token 共17个&#xff0c;优先看和请求相关的 给第一个_token打上断点&#xff0c;然后切换评论&#xff0c;就直接断住了 n h(i, e.sendData) _token: n 现在给它打上断点&am…

【Python+Pycharm】2024-Python安装配置教程

【PythonPycharm】2024-Python安装配置教程 一、下载装 Python 1、进入Python官网首页&#xff0c;下载最新的Python版本 Download Python | Python.org 选择对应版本下载 安装 测试安装情况 python如果安装失败 在系统环境变量添加安装路径 where pythonwin7安装路径添加…

Python中如何计算整商:详解整除运算及其应用场景

目录 一、整除运算的基本概念 1. 语法 2. 工作原理 二、整除运算的详细解析 1. 整数之间的整除 2. 浮点数之间的整除 3. 整数与浮点数之间的整除 三、整除运算的应用场景 1. 数据处理中的取整操作 2. 循环中的步进控制 3. 分页显示数据 4. 时间计算中的取整 四、整…

sql注入——靶场Less1

?id1 ?id99union select 1,2,3-- 查看占位 ?id1 order by 3-- 尝试出表有几列 ?id1 order by 4-- 说明只有三列 ?id99 union select 1,database(),3-- 查询当前使用的数据库的名称 ?id99 union select 1,group_concat(table_name),3 from information_schema.tables …

教你将华为手机投屏到macOS系统的电脑,协同办公不用愁!

这个信息爆炸的时代&#xff0c;工作效率成为了衡量个人能力的一个重要指标。很多人都了解过华为手机的协同办公能力&#xff0c;华为电脑也可以让多台华为手机同时显示在一个电脑屏幕里。 如果电脑不是华为的&#xff0c;电脑系统换成macOS&#xff0c;还能达到将多台华为手机…

【IC每日一题--单bitCDC跨时钟和同步FIFO】

IC Daily QA--CDC跨时钟和同步FIFO 1 八股题&#xff1a;CDC跨时钟数据传输问题--单bit跨时钟1.1 从慢时钟到快时钟--->直接打两拍即可&#xff1b;1.2 快时钟到慢时钟1.2.1 脉冲信号展宽边沿检测1.2.2 慢到快时钟--握手边沿 2 手撕题&#xff1a;同步FIFO代码&#xff1b;1…

零基础玩转IPC之——如何实现远程实时查看监控视频(P2P)

P2P是peer-to-peer的简称&#xff0c;又称为点对点技术&#xff0c;是没有中心服务器、依靠用户群节点进行信息交换的对等式网络。区别于传统的C/S中央服务器结构&#xff0c;P2P网络中每一个用户节点即是客户端又是服务端&#xff0c;能同时作为服务器给其他节点提供服务。 优…