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

目录

前言:

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

基础夯实:

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

数据库的创建

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数据库的基础知识、创建和删除数据库表的方法、删除数据库记录的方式以及注意事项等。掌握这些理论知识对于进行高效的安卓开发至关重要。

效果展示:

创建效果:

删除效果:

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

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

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

按照你的生成路径进行查找,我一开始,自己随便找,文件太多了,根本找不到。

核心代码:

数据库创建活动文件:

java 复制代码
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 复制代码
<?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>
相关推荐
yours_Gabriel2 小时前
【Redis_1】初识Redis
数据库·redis·缓存
萝卜青今天也要开心2 小时前
读书笔记-《Redis设计与实现》(二)单机数据库实现(上)
java·数据库·redis·学习·缓存
@Java小牛马3 小时前
Redis真的是单线程的吗?
数据库·redis·缓存·reactor·单线程·多线程
志尊宝3 小时前
Android 深入探究 JSONObject 与 JSONArray:Android 中的数据解析与数组操作全解析
android
biubiubiu07064 小时前
Redis缓存穿透,雪崩,击穿
数据库·redis·缓存
lingllllove8 小时前
ubuntu22.04防火墙策略
数据库·postgresql
程序猿小D11 小时前
第三百五十八节 JavaFX教程 - JavaFX滑块
java·前端·数据库
memorycx11 小时前
MySQL(3)
数据库·sql
My LQS11 小时前
使用 EXISTS 解决 SQL 中 IN 查询数量过多的问题
数据库·sql
莫名有雪16 小时前
BUUCTF_[网鼎杯 2020 朱雀组]phpweb(反序列化绕过命令)
android