Android Studio数据库增删改查。

2023-10-28

简单实现Android数据库的增删改查操作。

 MySQLiteHelper.java

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

public class MySQLiteHelper extends SQLiteOpenHelper {
    public static final String DB_NAME="bookstore.db";
    public static final int DB_VERSION=2;
    public MySQLiteHelper(@Nullable Context context)
    {super(context,DB_NAME,null,DB_VERSION);}

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        updateMyDatabase(sqLiteDatabase,0,DB_VERSION);
    }
    public static void insertBook(SQLiteDatabase sqLiteDatabase,String name,String isbn,String description,int imageId){
        ContentValues contentValues=new ContentValues();
        contentValues.put("NAME",name);
        contentValues.put("DESCRIPTION",description);
        contentValues.put("ISBN",isbn);
        contentValues.put("IMAGE_ID",imageId);
        sqLiteDatabase.insert("BOOK",null,contentValues);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
    public void updateMyDatabase(SQLiteDatabase sqLiteDatabase,int i,int i1){
        if (i<1){
            sqLiteDatabase.execSQL("CREATE TABLE BOOK(_id INTEGER PRIMARY KEY AUTOINCREMENT," +
                    "NAME TEXT,ISBN TEXT,DESCRIPTION TEXT,IMAGE_ID INTEGER)");
            insertBook(sqLiteDatabase,"Android移动应用基础教程","9787113252502","本书是第一本Android入门书籍,共15章", R.drawable.book1);
            insertBook(sqLiteDatabase,"Android第一行代码(第二版)","978711343434","本书案例非常实用,深入浅出",R.drawable.book2);
            insertBook(sqLiteDatabase,"Head First Android开发","9787113544356","开发Android应用的快速指南和参考书",R.drawable.book3);
        }
        if (i<2){

        }
    }
}


 BookCategoryActivity.java

package com.example.computerbookstore;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;

public class BookCategoryActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_book_category);
        ListView listBook = findViewById(R.id.list_item);
        SQLiteOpenHelper helper = new MySQLiteHelper(this);

        try {
            SQLiteDatabase db = helper.getWritableDatabase();
            Cursor cursor = db.query("BOOK", new String[]{"_id","NAME"},
                    null, null,null,null,null);
            SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                    android.R.layout.simple_list_item_1, cursor, new String[]{"NAME"},
                    new int[]{android.R.id.text1}, 0);
            listBook.setAdapter(adapter);

        } catch (SQLiteException e) {
            Toast.makeText(this, "数据库不能被创建", Toast.LENGTH_LONG).show();
        }
        listBook.setOnItemClickListener(this);

    }


    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        Intent intent = new Intent(this, BookActivity.class);
        intent.putExtra(BookActivity.EXTRA_BOOKID, (int) l);
        startActivity(intent);
    }

}

BookActivity.java

package com.example.computerbookstore;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import java.util.jar.Attributes;

public class BookActivity extends AppCompatActivity {
    public static final String EXTRA_BOOKID="bookId";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_book);
        EditText etName=findViewById(R.id.et_name);
        EditText etIsbn=findViewById(R.id.et_isbn);
        EditText etdescription=findViewById(R.id.et_description);
        ImageView ivBook=findViewById(R.id.imageView);
        Button btx=findViewById(R.id.button);
        Button bts=findViewById(R.id.button2);
        SQLiteOpenHelper helper=new MySQLiteHelper(this);
        int bookId=getIntent().getIntExtra(EXTRA_BOOKID,0);
        try {
            SQLiteDatabase sqLiteDatabase=helper.getReadableDatabase();
            Cursor cursor=sqLiteDatabase.query("BOOK",new String[]{"NAME","ISBN","DESCRIPTION","IMAGE_ID"},"_id=?",new String[]{Integer.toString(bookId)},null,null,null);
            if (cursor.moveToFirst()){
                String name=cursor.getString(0);
                etName.setText(name);
                String isbn=cursor.getString(1);
                etIsbn.setText(isbn);
                String description=cursor.getString(2);
                etdescription.setText(description);
                int id=cursor.getInt(3);
                ivBook.setImageResource(id);
            }
            cursor.close();
            sqLiteDatabase.close();
        }catch (SQLException e){
            Toast.makeText(this, "数据库创建失败", Toast.LENGTH_SHORT).show();
        }
        try {
            bts.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    SQLiteDatabase sqLiteDatabase = helper.getWritableDatabase();
                    sqLiteDatabase.delete("BOOK", "_id=?", new String[]{Integer.toString(bookId)});
                }
            });
        }catch (SQLException e){
            Toast.makeText(this,"此书信息已被删除",Toast.LENGTH_SHORT).show();
        }
        try {
            btx.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    SQLiteDatabase sqLiteDatabase=helper.getWritableDatabase();
                    ContentValues isbnValues=new ContentValues();
                    ContentValues nameValues=new ContentValues();
                    ContentValues descriptionValues=new ContentValues();
                    isbnValues.put("ISBN",etIsbn.getText().toString());
                    sqLiteDatabase.update("BOOK",isbnValues,"_id=?",new String[]{Integer.toString(bookId)});
                    nameValues.put("NAME",etName.getText().toString());
                    sqLiteDatabase.update("BOOK",nameValues,"_id=?",new String[]{Integer.toString(bookId)});
                    descriptionValues.put("DESCRIPTION",etdescription.getText().toString());
                    sqLiteDatabase.update("BOOK",descriptionValues,"_id=?",new String[]{Integer.toString(bookId)});
                }
            });
        }catch (SQLException e){
            Toast.makeText(this,"修改成功",Toast.LENGTH_SHORT).show();
        }
    }
}

activity_book.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".BookActivity">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/book1" />

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="85dp"
        android:layout_height="60dp"
        android:gravity="center"
        android:layout_centerVertical="true"
        android:layout_below="@id/imageView"
        android:textSize="18sp"
        android:layout_marginTop="2dp"
        android:text="书籍名称: " />

    <EditText
        android:id="@+id/et_name"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_toRightOf="@id/tv_name"
        android:layout_below="@id/imageView"
        android:ems="100" />

    <TextView
        android:id="@+id/tv_isbn"
        android:layout_width="85dp"
        android:gravity="center"
        android:layout_height="60dp"
        android:textSize="18sp"
        android:layout_below="@id/tv_name"
        android:text="ISBN: " />

    <EditText
        android:id="@+id/et_isbn"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_below="@id/et_name"
        android:layout_toRightOf="@id/tv_isbn"
        android:ems="100" />

    <TextView
        android:id="@+id/tv_description"
        android:layout_width="85dp"
        android:layout_height="60dp"
        android:gravity="center"
        android:textSize="18sp"
        android:layout_below="@id/tv_isbn"
        android:text="书籍简介: " />

    <EditText
        android:id="@+id/et_description"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_below="@id/et_isbn"
        android:layout_toRightOf="@id/tv_description"
        android:ems="100" />

    <Button
        android:id="@+id/button"
        android:layout_marginLeft="20dp"
        android:layout_width="80dp"
        android:layout_height="50dp"
        android:padding="10dp"
        android:layout_below="@id/et_description"
        android:text="修改" />

    <Button
        android:id="@+id/button2"
        android:layout_width="80dp"
        android:layout_height="50dp"
        android:layout_marginRight="20dp"
        android:padding="10dp"
        android:layout_alignParentRight="true"
        android:layout_below="@id/et_description"
        android:text="删除" />

</RelativeLayout>

activity_book_category.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".BookActivity">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/book1" />

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="85dp"
        android:layout_height="60dp"
        android:gravity="center"
        android:layout_centerVertical="true"
        android:layout_below="@id/imageView"
        android:textSize="18sp"
        android:layout_marginTop="2dp"
        android:text="书籍名称: " />

    <EditText
        android:id="@+id/et_name"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_toRightOf="@id/tv_name"
        android:layout_below="@id/imageView"
        android:ems="100" />

    <TextView
        android:id="@+id/tv_isbn"
        android:layout_width="85dp"
        android:gravity="center"
        android:layout_height="60dp"
        android:textSize="18sp"
        android:layout_below="@id/tv_name"
        android:text="ISBN: " />

    <EditText
        android:id="@+id/et_isbn"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_below="@id/et_name"
        android:layout_toRightOf="@id/tv_isbn"
        android:ems="100" />

    <TextView
        android:id="@+id/tv_description"
        android:layout_width="85dp"
        android:layout_height="60dp"
        android:gravity="center"
        android:textSize="18sp"
        android:layout_below="@id/tv_isbn"
        android:text="书籍简介: " />

    <EditText
        android:id="@+id/et_description"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_below="@id/et_isbn"
        android:layout_toRightOf="@id/tv_description"
        android:ems="100" />

    <Button
        android:id="@+id/button"
        android:layout_marginLeft="20dp"
        android:layout_width="80dp"
        android:layout_height="50dp"
        android:padding="10dp"
        android:layout_below="@id/et_description"
        android:text="修改" />

    <Button
        android:id="@+id/button2"
        android:layout_width="80dp"
        android:layout_height="50dp"
        android:layout_marginRight="20dp"
        android:padding="10dp"
        android:layout_alignParentRight="true"
        android:layout_below="@id/et_description"
        android:text="删除" />

</RelativeLayout>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Studio数据库增删改查。 的相关文章

随机推荐

  • 【教3妹学算法-leetcode】数组能形成多少数对

    插 前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 坚持不懈 越努力越幸运 大家一起学习鸭 3妹 这么热的天气还要持续多久啊 快要被热死了 2哥 感觉还要有一阵子 今天刚入伏 3妹 啊 今年
  • 三极管的工作原理详解,图文+案例

    什么是三极管 三极管全称是 晶体三极管 也被称作 晶体管 是一种具有放大功能的半导体器件 通常指本征半导体三极管 即BJT管 典型的三极管由三层半导体材料 有助于连接到外部电路并承载电流的端子组成 施加到晶体管的任何一对端子的电压或电流控制
  • C语言程序设计 例7-5

    例7 5 原题 选择排序法 输入一个正整数n 1
  • C++解释器模式:Interpreter Pattern

    当有语言要解释时 请使用解释器模式为语言创建解释器 解释器模式的核心是解释器类 在解释器模式中一般会定义两种解释器 终结符解释器 Terminal Expression Interpreter 终结符解释器用于解释语言中的基本单位 对应语法
  • [架构之路-210]- 人人都是产品经理 - 互联网产品解决用户需求的分析思路和方法笔记

    目录 前言 一 产品需求分析思路和方法 产品需求 1 产品需求的内涵 什么是产品 什么是需求 需求的产品的关系 案例分析 理解需求的误区 2 需求的分类及层次 规律 拆解用户需求 需求分类 需求层次 马斯洛需求层次理论 需求层次的规律 拆解
  • K-means聚类之一(多维整型数据)

    算法介绍 k means 算法接受输入量 k 然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足 同一聚类中的对象相似度较高 而不同聚类中的对象相似度较小 聚类相似度是利用各聚类中对象的均值所获得一个 中心对象 引力中心 来进行计算
  • javascript对象概念大全

    http www css88 com archives 512 本文介绍了几乎所有关于对象的基本概念 什么是对象 如何创建对象 对象的属性的设置和读取 删除属性的方法 构造函数 对象原型 父类 子类 继承等等 1 对象 对象是一种复合数据类
  • Python爬虫小程序

    import base64 import string import time from selenium import webdriver from selenium webdriver chrome service import Ser
  • 【Docker技术入门与实践(第2版)】Docker入门_学习笔记

    第一章 1 Docker入门须知 1 1 Docker基本知识 Docker是基于Go语言实现的开源容器项目 诞生于2013年年初 最初发 起者是dotCloud公司 Docker自开源后受到广泛的关注和讨论 目前已有多个相关项目 包括Do
  • OpenCV中GPU模块(CUDA)函数

    The OpenCV GPU module is a set of classes and functions to utilize GPU computational capabilities It is implemented usin
  • java读取excel中的数据(包括.xlsx和.xls)

    java读取excel中的数据 包括 xlsx和 xls java读取excel文件中的数据常用jxl和poi两种方式 其中最主要的区别在于jxl不支持 xlsx 而poi支持 小编平时用的比较多的是poi的方式 所以今天小编介绍的也是po
  • 时间戳的基本概念

    1 什么是时间戳 时间戳是指格林威治时间自1970年1月1日 00 00 00 GMT 至当前时间的总秒数 它也被称为Unix时间戳 Unix Timestamp 通俗的讲 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证
  • 业内同行盆友来稿:对libc.so下毒手引发的惨痛血案,围观大型翻车现场...

    写在开篇 为了在线上安装环境依赖 给glibc库升级 由于线上环境libc so版本低 不支持安装 所以手贱把动态库中的libc so 6给移走了 直接导致Linux系统崩溃 系统瘫痪 所有用户均被强制退出 意识到缺少对libc so的认识
  • SpringBoot MybatisPlus 动态数据源

    实现功能 通过访问同一个接口携带不同参数查询不同的数据库 动态进行数据源切换 1 创建一个数据源对象 管理数据源和过期时间 Data NoArgsConstructor AllArgsConstructor public class Dat
  • zibgee协议

    1 概述 1 1解析ZigBee堆栈架构 ZigBee堆栈是在IEEE 802 15 4标准基础上建立的 定义了协议的MAC和PHY层 ZigBee设备应该包括IEEE802 15 4 该标准定义了RF射频以及与相邻设备之间的通信 的PHY
  • 什么是Ricardian Contract李嘉图合约?

    Ricardian Contracts是数字文档 用于定义两方或多方之间交互的条款和条件 在20世纪90年代 伊恩 格里格 Ian Grigg 在寻找创造数字化现金的愿景的朋友之后学会了资产的数字化 Ian Grigg发现债券数字化的必要性
  • EL900音色编辑之‘包络(Envelope)简单释义’

    包络其实是一个听的见却并不好具象的去理解的声 音物理特征 我们往往会通过反应速度 音头 延音等 等词汇来形容 但是系统的通过ADSR来描绘可能会更 加的清晰 声音的传播活动是一个动态的过程 一种 乐器的音色之所以悦耳 丰满 是由于它的波 形
  • error: LNK2019与error: LNK1120解决方案,亲测有效

    出现如下问题 1 仔细看蓝色圈所示 说是 ReadStep这个函数 vs能读取他所在的 h 文件 编译的时候却找不到他的实现文件 导致出现LNK2019问题 原因 在一个 h 文件中使用extern声明了 ReadStep这个函数 注意 如
  • pclint html报告,PC-Lint使用报告

    760 762 765 766 774 785 818 825 826 830 831 834 835 838 843 844 845 3 4 126 11 1 13 60 1 7 1227 221 8 87 17 117 2 11 Red
  • Android Studio数据库增删改查。

    简单实现Android数据库的增删改查操作 MySQLiteHelper java import android content ContentValues import android content Context import and