前言
一.环境配置,可查看往期文章。
二.了解数据库“增删改查”的具体原理,可查看往期文章。
三.实现的效果
设计如下图所示的页面,点击相应按钮实现对图书管理系统数据的“增删改查”。
功能实现
一.页面设计部分
页面设计不再一一讲解。布局页面可使用相对布局,快速进行页面设计。
二.代码编写
1.创建MyHelper.java文件,编写其代码
package com.example.zuoye_zhangsiqi_512; // 定义包名,用于组织代码
import android.content.Context; // 导入Context类,用于获取应用程序上下文
import android.database.sqlite.SQLiteDatabase; // 导入SQLiteDatabase类,用于操作SQLite数据库
import android.database.sqlite.SQLiteOpenHelper; // 导入SQLiteOpenHelper类,用于创建和管理数据库
import androidx.annotation.Nullable; // 导入@Nullable注解,用于标记参数可以为null
public class MyHelper extends SQLiteOpenHelper { // 定义MyHelper类,继承自SQLiteOpenHelper
public MyHelper(@Nullable Context context){ // 构造方法,接收一个Context对象
super(context,"student.db",null,1); // 调用父类构造方法,指定数据库文件名为"student.db",版本号为1
}
public void onCreate(SQLiteDatabase sqLiteDatabase){ // onCreate方法,在数据库第一次创建时被调用
sqLiteDatabase.execSQL("CREATE TABLE information(" + // 执行SQL语句创建表
"_id INTEGER PRIMARY KEY AUTOINCREMENT" + // 主键字段,自动递增
",code INTEGER" + // 整型字段
",name VARCHAR(20)" + // 长度为20的字符串字段
",author VARCHAR(20)" + // 长度为20的字符串字段
",number INTEGER)"); // 整型字段
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // onUpgrade方法,在数据库版本号发生变化时被调用
// 此方法为空,没有实现任何逻辑,通常用于处理数据库升级逻辑
}
}
2.在MainActivity中编写代码
package com.example.zuoye_zhangsiqi_512; // 定义包名,用于组织代码
import android.content.ContentValues; // 导入ContentValues类,用于存储键值对
import android.database.Cursor; // 导入Cursor类,用于操作数据库查询结果
import android.database.sqlite.SQLiteDatabase; // 导入SQLiteDatabase类,用于操作SQLite数据库
import android.os.Bundle; // 导入Bundle类,用于传递数据
import android.view.View; // 导入View类,用于操作UI组件
import android.widget.Button; // 导入Button类,用于按钮操作
import android.widget.EditText; // 导入EditText类,用于输入框操作
import android.widget.TextView; // 导入TextView类,用于显示文本
import androidx.activity.EdgeToEdge; // 导入EdgeToEdge类,用于实现全屏效果
import androidx.appcompat.app.AppCompatActivity; // 导入AppCompatActivity类,用于创建Activity
import androidx.core.graphics.Insets; // 导入Insets类,用于处理窗口内边距
import androidx.core.view.ViewCompat; // 导入ViewCompat类,用于兼容性操作
import androidx.core.view.WindowInsetsCompat; // 导入WindowInsetsCompat类,用于处理窗口内边距
public class MainActivity extends AppCompatActivity { // 定义MainActivity类,继承自AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState) { // 重写onCreate方法,初始化Activity
super.onCreate(savedInstanceState); // 调用父类的onCreate方法
EdgeToEdge.enable(this); // 启用全屏效果
setContentView(R.layout.activity_main); // 设置布局文件
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { // 设置窗口内边距监听器
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); // 获取系统栏的内边距
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); // 设置内边距
return insets;
});
//
EditText editcode = findViewById(R.id.editTextText); // 获取图书编码输入框
EditText editname = findViewById(R.id.editTextText2); // 获取图书名称输入框
EditText editauthor = findViewById(R.id.editTextText3); // 获取图书作者输入框
EditText editnumber = findViewById(R.id.editTextText4); // 获取图书数量输入框
TextView bookTv = findViewById(R.id.textView); // 获取用于显示图书信息的TextView
Button addbtn = findViewById(R.id.button); // 获取新增按钮
Button updatebtn = findViewById(R.id.button2); // 获取修改按钮
Button searchbtn = findViewById(R.id.button3); // 获取查询按钮
Button deletbtn = findViewById(R.id.button4); // 获取删除按钮
//
MyHelper helper = new MyHelper(getApplicationContext()); // 创建MyHelper对象,用于数据库操作
//新增
addbtn.setOnClickListener(new View.OnClickListener() { // 设置新增按钮的点击事件
@Override
public void onClick(View v) {
SQLiteDatabase db = helper.getWritableDatabase(); // 获取可写的数据库对象
ContentValues values = new ContentValues(); // 创建ContentValues对象,用于存储键值对
String bookcode = editcode.getText().toString(); // 获取图书编码
String bookname = editname.getText().toString(); // 获取图书名称
String bookauthor = editauthor.getText().toString(); // 获取图书作者
String booknumber = editnumber.getText().toString(); // 获取图书数量
//数据创建方法
values.put("code",Integer.valueOf(bookcode)); // 将图书编码存入ContentValues
values.put("name",bookname); // 将图书名称存入ContentValues
values.put("author",bookauthor); // 将图书作者存入ContentValues
values.put("number",Integer.valueOf(booknumber)); // 将图书数量存入ContentValues
db.insert("information",null,values); // 将数据插入到information表中
db.close(); // 关闭数据库
}
});
// 修改
updatebtn.setOnClickListener(new View.OnClickListener() { // 设置修改按钮的点击事件
@Override
public void onClick(View v) {
SQLiteDatabase db = helper.getWritableDatabase(); // 获取可写的数据库对象
ContentValues values = new ContentValues(); // 创建ContentValues对象,用于存储键值对
// 获取书的编号和新的数量
String bookcode = editcode.getText().toString(); // 获取图书编码
String booknumber = editnumber.getText().toString(); // 获取图书数量
// 只更新 booknumber 字段
values.put("number", Integer.valueOf(booknumber)); // 将新的图书数量存入ContentValues
// 根据 bookcode 来更新
db.update("information", values, "code=?", new String[]{bookcode}); // 更新information表中指定图书编码的记录
db.close(); // 关闭数据库
}
});
// 查询
searchbtn.setOnClickListener(new View.OnClickListener() { // 设置查询按钮的点击事件
@Override
public void onClick(View v) {
SQLiteDatabase db = helper.getReadableDatabase(); // 获取可读的数据库对象
//创建一个查询函数(Cursor游标)
Cursor cursor = db.query("information",null,null,null,null,null,null); // 查询information表的所有记录
String info = ""; // 用于存储查询结果的字符串
while (cursor.moveToNext()){ // 遍历查询结果
String s_id = cursor.getString(Math.max(cursor.getColumnIndex("_id"),0)); // 获取_id字段的值
String s_code = cursor.getString(Math.max(cursor.getColumnIndex("code"),0)); // 获取code字段的值
String s_name = cursor.getString(Math.max(cursor.getColumnIndex("name"),0)); // 获取name字段的值
String s_author = cursor.getString(Math.max(cursor.getColumnIndex("author"),0)); // 获取author字段的值
String s_number = cursor.getString(Math.max(cursor.getColumnIndex("number"),0)); // 获取number字段的值
info += s_id+" ;"+"编号:"+s_code+" ;"+"名称:"+s_name+"\n"+"作者:"+s_author+" ;"+"数量:"+s_number+"\n"; // 拼接查询结果
}
//信息显示在文本当中
bookTv.setText(info); // 将查询结果显示在TextView中
cursor.close(); // 关闭Cursor
db.close(); // 关闭数据库
}
});
// 删除
deletbtn.setOnClickListener(new View.OnClickListener() { // 设置删除按钮的点击事件
@Override
public void onClick(View v) {
SQLiteDatabase db = helper.getWritableDatabase(); // 获取可写的数据库对象
String bookcode = editcode.getText().toString(); // 获取图书编码
db.delete("information","code=?",new String[]{bookcode}); // 删除information表中指定图书编码的记录
db.close(); // 关闭数据库
}
});
}
}
三.数据库内容查询
查询是否保存成功(打开database文件查看)
数据库存入数据结果乱码转换
若下载错误Plugins,则可在marketplace中下载(不要盲目进行删除操作)
四.实现效果
1.实现数据的添加
2.实现数据的修改
3.实现数据的查询
4.实现数据的删除
5.至此。图书管理系统的增删改查实现完毕
感谢各位读者的阅读!希望大家给出一键三连,多多支持原创。有错误和不解的地方,欢迎各位读者在评论区讨论,我也会不断学习不断改进,做出更加优质的作品!!!
最后相关代码已传入资源中,可根据需求自行获取。