目录
前言:
安卓开发中数据库是很重要的模块,本文简单介绍数据库的创建与删除,并展示如何查找数据库的位置,这个位置,我一开始挺懵,网上查资料,但是没有找到路径,最后在看到虚拟机上有路径,所以分享本文。
基础夯实:
在安卓开发中,数据库的创建与删除是数据管理的基础操作。以下是对这两个方面理论知识的详细阐述:
数据库的创建
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>