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

目录

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

前言:

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

基础夯实:

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

数据库的创建

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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_database);tvDatabase = findViewById(R.id.tv_database); // 初始化TextViewfindViewById(R.id.btn_database_create).setOnClickListener(this);findViewById(R.id.btn_database_delete).setOnClickListener(this);databaseName = getFilesDir() + "/test1241024.db";}@Overridepublic 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"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid: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" /><Buttonandroid: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><TextViewandroid: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.rhkb.cn/news/461211.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UV紫外相机

在产业设备领域&#xff0c;运用相机进行检测的需求很大&#xff0c;应用也很多样&#xff0c;对于图像传感器性能的期望逐年提升。在这样的背景下&#xff0c;可拍摄紫外线&#xff08;UV&#xff1a;Ultra Violet&#xff09;图像的相机拥有越来越广泛的应用场景。将UV照明和…

Python学习的自我理解和想法(22)

学的是b站的课程&#xff08;千锋教育&#xff09;&#xff0c;跟老师写程序&#xff0c;不是自创的代码&#xff01; 今天是学Python的第22天&#xff0c;学的内容是正则表达式&#xff0c;明天会出一篇详细实例介绍。电脑刚修好&#xff01;开学了&#xff0c;时间不多&…

ARM base instruction -- bfi

Bitfield Insert copies a bitfield of <width> bits from the least significant bits of the source register to bit position <lsb> of the destination register, leaving the other destination bits unchanged. 位域插入将<width>位的位域从源寄存器的…

Python实现深度学习模型预测控制(tensorflow)DL-MPC(Deep Learning Model Predictive Control

链接&#xff1a;深度学习模型预测控制 &#xff08;如果认为有用&#xff0c;动动小手为我点亮github小星星哦&#xff09;&#xff0c;持续更新中…… 链接&#xff1a;WangXiaoMingo/TensorDL-MPC&#xff1a;DL-MPC&#xff08;深度学习模型预测控制&#xff09;是基于 P…

ubuntu交叉编译expat库给arm平台使用

1.下载expat库源码: https://github.com/libexpat/libexpat/release?page=2 wget https://github.com/libexpat/libexpat/release/download/R_2_3_0/expat-2.3.0.tar.bz2 下载成功: 2.解压expat库,并进入解压后的目录: tar xjf expat-2.3.0.tar.bz2 cd expat-2.3.0 <…

C# 编程语言学习教程

C# 编程语言学习教程 目录 C# 简介 1.1 什么是 C#1.2 C# 的特点1.3 C# 的应用领域 环境搭建 2.1 安装 Visual Studio2.2 创建第一个 C# 项目 基础语法 3.1 数据类型3.2 控制结构3.3 数组与字符串 面向对象编程 4.1 类与对象4.2 继承与多态4.3 接口与抽象类 常用库与框架 5.1 .…

文件上传知识梳理:原理、工具、绕过、利用与防御

文章简介&#xff1a; 本文全面梳理了文件上传相关知识&#xff0c;包括文件上传漏洞的原理及危害&#xff0c;介绍了 Webshell 相关工具&#xff08;如冰蝎、哥斯拉、蚁剑&#xff09;&#xff0c;详细阐述了文件上传绕过检测的多种方法&#xff08;前端检测、服务端检测的各…

学Linux的第六天

目录 账户和组管理 工作组管理 创建工作组groupadd 修改工作组groupmod 添加/删除组成员gpasswd 删除工作组groupdel 查看用户登录系统的情况 users查看当前登录系统的用户 last命令 lastlog命令 w命令 显示登录到系统的用户信息 who命令 Linux文件系统权限 文件…

KKFileView v4.4.0文件预览服务 编译和window运行和nginx代理设置

目录 一、拉取代码 二、编译打包 三、测试使用 四、实际使用 五、其他问题 本文记录&#xff0c;使用最新v4.4.0版本KKFileView源代码&#xff0c;在本地window上搭建文件预览服务&#xff0c;并通过nginx反向代理实现https访问。 一、拉取代码 从官网github上下载源代码…

树莓派基础设置--1.更新和升级操作系统

注意&#xff1a;使树莓派保持最新状态可以提高系统的安全性&#xff0c;但对于开发人员并不建议随意更新&#xff01; 一、图像化界面 一般桌面的右上角也会显示树莓派系统更新的提示&#xff0c;可以点击相应选项进行更新&#xff01; 二、使用APT 用来管理软件安装、升级…

用Pyhon写一款简单的益智类小游戏——2048

文字版——代码及讲解 代码—— import random# 初始化游戏棋盘 def init_board():return [[0] * 4 for _ in range(4)]# 在棋盘上随机生成一个2或4 def add_new_tile(board):empty_cells [(i, j) for i in range(4) for j in range(4) if board[i][j] 0]if empty_cells:i,…

STL---unordered_set与unordered_map与前言(哈希表)

文章目录 哈希哈希容器&#xff1a;unordered_set与unordered_map哈希哈希表哈希函数哈希冲突解决哈希冲突扩容 哈希表的代码实现线性探测法解决哈希冲突哈希桶解决哈希冲突 哈希 哈希容器&#xff1a;unordered_set与unordered_map unordered_set 定义如下: 常用接口 跟桶…

深度学习(八) TensorFlow、PyTorch、Keras框架大比拼(8/10)

一、深度学习框架概述 深度学习框架在当今人工智能和机器学习领域中占据着至关重要的地位。其中&#xff0c;TensorFlow 由 Google 开发&#xff0c;自 2015 年发布以来&#xff0c;凭借其灵活的计算图、自动微分功能以及跨平台支持等特点&#xff0c;迅速成为主流深度学习框架…

盘点Windows10系统之下好用的录屏工具!

在当前时代&#xff0c;互联网媒体的普及。图片视频等随处可见&#xff0c;越来越多的工作、学习、培训等都以转变成视频形式。我的工作就是离不开利用视频来进行交流。也因如此&#xff0c;很多时候因为直播中需要进行回顾等录屏需求&#xff0c;使用过多款录屏软件。拥有一款…

【MySQL】实战篇—项目需求分析:ER图的绘制与关系模型设计

在软件开发中&#xff0c;数据库是信息系统的核心部分&#xff0c;合理的数据库设计能够显著提高系统的性能和可维护性。 ER图&#xff08;实体-关系图&#xff09;是数据库设计的重要工具&#xff0c;它通过图形化的方式描述了数据实体及其相互关系&#xff0c;帮助开发者和设…

短信验证码发送实现(详细教程)

短信验证码 接口防刷强检验以及缓存验证码阿里云短信服务操作步骤验证码发送实现 好久没发文啦&#xff01;最近也是在工作中遇到我自认为需要记录笔记的需求&#xff0c;本人只求日后回顾有迹可寻&#xff0c;不喜勿喷&#xff01; 废话不多说&#xff0c;直接上代码&#xff…

深度学习数学基础之梯度

深度学习数学基础之梯度 方向余弦 方向导数 梯度&#xff08;向量&#xff09; 变化率最大的方向或者说方向导数最大的方向就是梯度向量的方向指向方向导数变化最大的方向

PYNQ 框架 - VDMA驱动 - 帧缓存

目录 1. 简介 2. 代码分析 2.1 _FrameCache 类定义 2.1.1 xlnk.cma_array() 2.1.2 pointerNone 2.1.3 PynqBuffer 2.2 _FrameCache 例化与调用 2.3 _FrameCache 测试 2.4 _FrameList 类定义 2.5 _FrameList 例化与调用 2.6 _FrameList 测试 3. 帧的使用 3.1 读取帧…

Cloud Compare学习笔记

1.1 导出文件 导出点云数据为 PCD 格式时&#xff0c;系统提供了三种保存选项&#xff0c;分别是 Compressed Binary&#xff08;压缩二进制&#xff09;、Binary&#xff08;二进制&#xff09;、ASCII/Text&#xff08;文本&#xff09; Compressed Binary&#xff08;压缩…

电商直播带货乱象频出,食品经销商如何规避高额损失?

近年来&#xff0c;电商直播带货乱象频出&#xff0c;食品经销行业售卖商品涉嫌违规的事件层出不穷。以食品安全为例&#xff0c;2024年10月17日市场监管总局发布了关于11批次食品抽检不合格情况的通告&#xff0c;在抽检的650批次样品中&#xff0c;发现存在食品添加剂超范围超…