android实现向Sqlite数据库中增加、删除、查询数据实训代码

时间: 2024-02-03 21:03:48 浏览: 34
以下是一个简单的 Android 应用程序,它使用 SQLite 数据库来存储和检索数据。这个应用程序允许用户添加、删除和查询数据。 首先,在 `AndroidManifest.xml` 文件中添加以下权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 然后在 `build.gradle` 文件中添加以下依赖: ```groovy implementation 'androidx.sqlite:sqlite:2.1.0' ``` 接下来,创建一个名为 `DatabaseHelper` 的类来管理数据库。这个类继承自 `SQLiteOpenHelper` 类,它有两个方法:`onCreate()` 和 `onUpgrade()`,可以在这里创建和更新数据库。 ```java import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.db"; private static final int DATABASE_VERSION = 1; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE mytable (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS mytable"); onCreate(db); } } ``` 在 `onCreate()` 方法中,我们创建一个名为 `mytable` 的表,它有三个列:`_id`、`name` 和 `age`。`_id` 列是一个自增的整数,用作主键。`name` 和 `age` 列是分别用于存储名称和年龄的文本和整数列。 在 `onUpgrade()` 方法中,我们删除旧表并创建新表。 接下来,创建一个名为 `MainActivity` 的类来管理应用程序。这个类包含三个方法:`addData()`、`deleteData()` 和 `queryData()`,它们分别用于添加、删除和查询数据。 ```java import androidx.appcompat.app.AppCompatActivity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private EditText mNameEditText; private EditText mAgeEditText; private TextView mDataTextView; private SQLiteDatabase mDatabase; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mNameEditText = findViewById(R.id.name_edit_text); mAgeEditText = findViewById(R.id.age_edit_text); mDataTextView = findViewById(R.id.data_text_view); DatabaseHelper dbHelper = new DatabaseHelper(this); mDatabase = dbHelper.getWritableDatabase(); } public void addData(View view) { String name = mNameEditText.getText().toString().trim(); String ageString = mAgeEditText.getText().toString().trim(); if (name.isEmpty() || ageString.isEmpty()) { Toast.makeText(this, "Please enter a name and age", Toast.LENGTH_SHORT).show(); return; } int age = Integer.parseInt(ageString); ContentValues cv = new ContentValues(); cv.put("name", name); cv.put("age", age); long result = mDatabase.insert("mytable", null, cv); if (result == -1) { Toast.makeText(this, "Failed to add data", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "Data added successfully", Toast.LENGTH_SHORT).show(); } } public void deleteData(View view) { String name = mNameEditText.getText().toString().trim(); if (name.isEmpty()) { Toast.makeText(this, "Please enter a name", Toast.LENGTH_SHORT).show(); return; } int result = mDatabase.delete("mytable", "name=?", new String[]{name}); if (result == 0) { Toast.makeText(this, "No data found to delete", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "Data deleted successfully", Toast.LENGTH_SHORT).show(); } } public void queryData(View view) { Cursor cursor = mDatabase.query("mytable", null, null, null, null, null, null); StringBuilder sb = new StringBuilder(); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("_id")); String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); sb.append(id).append(": ").append(name).append(", ").append(age).append("\n"); } if (sb.length() == 0) { mDataTextView.setText("No data found"); } else { mDataTextView.setText(sb.toString()); } } } ``` 在 `onCreate()` 方法中,我们获取到 `EditText` 和 `TextView` 的实例,然后创建一个 `DatabaseHelper` 对象并获取到可写的 `SQLiteDatabase` 对象。 在 `addData()` 方法中,我们从 `EditText` 中获取名称和年龄,并将它们添加到 `ContentValues` 对象中。然后我们使用 `insert()` 方法将数据添加到数据库中,并根据结果显示适当的消息。 在 `deleteData()` 方法中,我们从 `EditText` 中获取名称,并使用 `delete()` 方法从数据库中删除对应的数据。然后我们根据结果显示适当的消息。 在 `queryData()` 方法中,我们使用 `query()` 方法从数据库中检索所有数据,并将它们显示在 `TextView` 中。 最后,我们需要在布局文件 `activity_main.xml` 中添加以下代码: ```xml <EditText android:id="@+id/name_edit_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Name" /> <EditText android:id="@+id/age_edit_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Age" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Add Data" android:onClick="addData" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Delete Data" android:onClick="deleteData" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Query Data" android:onClick="queryData" /> <TextView android:id="@+id/data_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" /> ``` 这样,我们就完成了一个简单的 Android 应用程序,它可以使用 SQLite 数据库来存储和检索数据。

相关推荐

最新推荐

recommend-type

C#/.Net 中快速批量给SQLite数据库插入测试数据

在C#/.Net环境中,对SQLite数据库进行快速批量插入测试数据是常见的开发需求,尤其是在测试、性能优化或者数据初始化时。下面将详细讲解如何利用C#/.Net的特性以及SQLite数据库API来实现这一目标。 首先,SQLite是...
recommend-type

android创建数据库(SQLite)保存图片示例

本示例主要讲解如何在Android中创建SQLite数据库并实现保存图片到数据库,以及从数据库中取出图片显示。以下是详细步骤和知识点解析: 1. **创建数据库**: - `DBService` 类继承自 `SQLiteOpenHelper`,这是处理...
recommend-type

Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例

在Python编程中,SQLite3是一个轻量级的数据库引擎,它被广泛用于存储和管理数据。而Excel文件则是常见的数据报表格式,便于数据分析和展示。本示例将介绍如何使用Python读取SQLite3数据库中的数据,并将统计结果...
recommend-type

Android Studio如何获取SQLite数据并显示到ListView上

获取SQLite数据库中的数据可以通过以下步骤实现: 首先,定义一个类用来实例化数据库,例如: ```java public class InitDate { public Bitmap bitmap; public String content; public String data; public ...
recommend-type

Python实现读取TXT文件数据并存进内置数据库SQLite3的方法

本文将详细介绍如何使用Python读取TXT文件中的数据,并将其存储到SQLite3数据库中,同时也会涉及数据库的基本操作,如创建表、插入数据以及查询数据。 首先,我们需要导入`sqlite3`模块,这是Python标准库的一部分...
recommend-type

计算机基础知识试题与解答

"计算机基础知识试题及答案-(1).doc" 这篇文档包含了计算机基础知识的多项选择题,涵盖了计算机历史、操作系统、计算机分类、电子器件、计算机系统组成、软件类型、计算机语言、运算速度度量单位、数据存储单位、进制转换以及输入/输出设备等多个方面。 1. 世界上第一台电子数字计算机名为ENIAC(电子数字积分计算器),这是计算机发展史上的一个重要里程碑。 2. 操作系统的作用是控制和管理系统资源的使用,它负责管理计算机硬件和软件资源,提供用户界面,使用户能够高效地使用计算机。 3. 个人计算机(PC)属于微型计算机类别,适合个人使用,具有较高的性价比和灵活性。 4. 当前制造计算机普遍采用的电子器件是超大规模集成电路(VLSI),这使得计算机的处理能力和集成度大大提高。 5. 完整的计算机系统由硬件系统和软件系统两部分组成,硬件包括计算机硬件设备,软件则包括系统软件和应用软件。 6. 计算机软件不仅指计算机程序,还包括相关的文档、数据和程序设计语言。 7. 软件系统通常分为系统软件和应用软件,系统软件如操作系统,应用软件则是用户用于特定任务的软件。 8. 机器语言是计算机可以直接执行的语言,不需要编译,因为它直接对应于硬件指令集。 9. 微机的性能主要由CPU决定,CPU的性能指标包括时钟频率、架构、核心数量等。 10. 运算器是计算机中的一个重要组成部分,主要负责进行算术和逻辑运算。 11. MIPS(Millions of Instructions Per Second)是衡量计算机每秒执行指令数的单位,用于描述计算机的运算速度。 12. 计算机存储数据的最小单位是位(比特,bit),是二进制的基本单位。 13. 一个字节由8个二进制位组成,是计算机中表示基本信息的最小单位。 14. 1MB(兆字节)等于1,048,576字节,这是常见的内存和存储容量单位。 15. 八进制数的范围是0-7,因此317是一个可能的八进制数。 16. 与十进制36.875等值的二进制数是100100.111,其中整数部分36转换为二进制为100100,小数部分0.875转换为二进制为0.111。 17. 逻辑运算中,0+1应该等于1,但选项C错误地给出了0+1=0。 18. 磁盘是一种外存储设备,用于长期存储大量数据,既可读也可写。 这些题目旨在帮助学习者巩固和检验计算机基础知识的理解,涵盖的领域广泛,对于初学者或需要复习基础知识的人来说很有价值。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【进阶】音频处理基础:使用Librosa

![【进阶】音频处理基础:使用Librosa](https://picx.zhimg.com/80/v2-a39e5c9bff1d920097341591ca8a2dfe_1440w.webp?source=1def8aca) # 2.1 Librosa库的安装和导入 Librosa库是一个用于音频处理的Python库。要安装Librosa库,请在命令行中输入以下命令: ``` pip install librosa ``` 安装完成后,可以通过以下方式导入Librosa库: ```python import librosa ``` 导入Librosa库后,就可以使用其提供的各种函数
recommend-type

设置ansible 开机自启

Ansible是一个强大的自动化运维工具,它可以用来配置和管理服务器。如果你想要在服务器启动时自动运行Ansible任务,通常会涉及到配置服务或守护进程。以下是使用Ansible设置开机自启的基本步骤: 1. **在主机上安装必要的软件**: 首先确保目标服务器上已经安装了Ansible和SSH(因为Ansible通常是通过SSH执行操作的)。如果需要,可以通过包管理器如apt、yum或zypper安装它们。 2. **编写Ansible playbook**: 创建一个YAML格式的playbook,其中包含`service`模块来管理服务。例如,你可以创建一个名为`setu
recommend-type

计算机基础知识试题与解析

"计算机基础知识试题及答案(二).doc" 这篇文档包含了计算机基础知识的多项选择题,涵盖了操作系统、硬件、数据表示、存储器、程序、病毒、计算机分类、语言等多个方面的知识。 1. 计算机系统由硬件系统和软件系统两部分组成,选项C正确。硬件包括计算机及其外部设备,而软件包括系统软件和应用软件。 2. 十六进制1000转换为十进制是4096,因此选项A正确。十六进制的1000相当于1*16^3 = 4096。 3. ENTER键是回车换行键,用于确认输入或换行,选项B正确。 4. DRAM(Dynamic Random Access Memory)是动态随机存取存储器,选项B正确,它需要周期性刷新来保持数据。 5. Bit是二进制位的简称,是计算机中数据的最小单位,选项A正确。 6. 汉字国标码GB2312-80规定每个汉字用两个字节表示,选项B正确。 7. 微机系统的开机顺序通常是先打开外部设备(如显示器、打印机等),再开启主机,选项D正确。 8. 使用高级语言编写的程序称为源程序,需要经过编译或解释才能执行,选项A正确。 9. 微机病毒是指人为设计的、具有破坏性的小程序,通常通过网络传播,选项D正确。 10. 运算器、控制器及内存的总称是CPU(Central Processing Unit),选项A正确。 11. U盘作为外存储器,断电后存储的信息不会丢失,选项A正确。 12. 财务管理软件属于应用软件,是为特定应用而开发的,选项D正确。 13. 计算机网络的最大好处是实现资源共享,选项C正确。 14. 个人计算机属于微机,选项D正确。 15. 微机唯一能直接识别和处理的语言是机器语言,它是计算机硬件可以直接执行的指令集,选项D正确。 16. 断电会丢失原存信息的存储器是半导体RAM(Random Access Memory),选项A正确。 17. 硬盘连同驱动器是一种外存储器,用于长期存储大量数据,选项B正确。 18. 在内存中,每个基本单位的唯一序号称为地址,选项B正确。 以上是对文档部分内容的详细解释,这些知识对于理解和操作计算机系统至关重要。