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

目录

前言:

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

基础夯实:

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

数据库的创建

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>
相关推荐
兰琛2 小时前
Compose组件转换XML布局
android·xml·kotlin
我是个假程序员3 小时前
sql server数据库可疑修复
数据库
水w4 小时前
【Android Studio】解决报错问题Algorithm HmacPBESHA256 not available
android·开发语言·android studio
极限实验室4 小时前
如何使用 Nginx 代理 Easysearch 服务
数据库·nginx
whn19774 小时前
selectdb修改表副本
数据库
TDengine (老段)5 小时前
TDengine 中的视图
数据库·物联网·oracle·时序数据库·tdengine·iotdb
隐-梵6 小时前
Android studio进阶教程之(二)--如何导入高德地图
android·ide·android studio
Kyrie_Li6 小时前
Redis-Sentinel(哨兵模式)
数据库·redis·sentinel
Kika写代码6 小时前
【Android】界面布局-线性布局LinearLayout-例子
android·gitee
wangz767 小时前
kotlin,jetpack compose,使用DataStore保存数据,让程序下次启动时自动获取
android·kotlin·datastore·jetpack compose