前言
本程序是对于B站视频【android-sqlite数据库基本操作|快速入门|增删改查|基础】讲解的复现与总结。原视频链接如下http:// https://www.bilibili.com/video/BV1YY4y1M77G/?share_source=copy_web&vd_source=225ab65670127697252f369e1861a02c
本程序实现了自建安卓数据库,并且在数据库中可以执行增、删、改、查,等基本操作。
程序除了前端UI代码之外还包含MainActivity,MyDataHelper,BookModel,UpdateActivity这四个后端项目文件。
MainActivity 负责显示所有书籍列表、添加新书籍和处理每本书的删除和修改操作。
MyDataHelper 是数据库帮助类,处理数据库的创建、表的操作(增、删、改、查)。
BookModel 是书籍模型类,定义了书籍的属性和方法。
UpdateActivity 用于修改书籍信息,从 MainActivity 接收书籍信息,更新后保存到数据库。
后文也会分别对这些活动进行介绍。
UI
MainActivity的界面
除了常见的Plain Text和Button之外,我还使用了ListView。ListView用于展示添加的书籍信息,并且可以对信息进行修改或者删除。
更多关于ListView组件的使用方法可以参考官方文档
https://developer.android.com/reference/android/widget/ListView
代码如下
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity">
<EditText
android:id="@+id/add_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:ems="10"
android:hint="标题"
android:inputType="text"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/add_author"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:ems="10"
android:hint="作者"
android:inputType="text"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/add_title" />
<Button
android:id="@+id/add_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="添加"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/add_author" />
<ListView
android:id="@+id/view_all"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="30dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/add_btn" />
</androidx.constraintlayout.widget.ConstraintLayout>
UpdateActivity的界面
这个界面是在MainActivity中点击ListView里的任一书籍信息,即可跳转到此。
代码如下
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".UpdateActivity">
<EditText
android:id="@+id/update_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:ems="10"
android:hint="标题"
android:inputType="text"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/update_author"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:ems="10"
android:hint="作者"
android:inputType="text"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/update_title" />
<Button
android:id="@+id/update_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="确定修改"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/update_author" />
</androidx.constraintlayout.widget.ConstraintLayout>
功能
BookModel
这个活动首先利用构造函数对新的数据进行存储
public BookModel(Integer id, String title, String author) {
this.id = id;
this.title = title;
this.author=author;
}
然后是重写toString方法,让它返回书籍在数据库中存储的id,书名和作者名,并且方便输出
@Override
public String toString() {
return "BookModel{" +
"书籍id=" + id +
", 书名='" + title + "'" +
", 作者='" + author + "'" +
"}";
}
最后是通过创建一系