Sqlite数据库基本使用

ops/2024/10/18 18:26:27/

Android SQLite 数据库是一个轻量级的关系型数据库,它非常适合在移动设备上存储结构化数据。下面将详细介绍如何在 Android 应用中使用 SQLite 数据库进行数据存储,包括创建数据库、升级数据库、添加、更新、删除、查询数据以及使用事务的 Java 实现。

1. 创建数据库

在 Android 中,SQLite 数据库通常是通过继承 SQLiteOpenHelper 类来创建的。SQLiteOpenHelper 类提供了管理数据库创建和版本管理的方法。

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "my_database.db";
private static final int DATABASE_VERSION = 1;
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建表等操作
db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 数据库升级时的操作
}
}

2. 升级数据库

当需要升级数据库时,可以通过修改 DATABASE_VERSION 的值来触发 onUpgrade 方法。在这个方法中,你可以执行表结构的修改、数据的迁移等操作。

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 例如,从版本1升级到版本2时,添加一个新列
if (oldVersion < 2) {
db.execSQL("ALTER TABLE users ADD COLUMN email TEXT");
}
// 可以继续添加更多版本升级的逻辑
}

3. 添加数据

使用 SQLiteDatabase 的 insert 方法来添加数据。

SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "John Doe");
values.put("age", 30);
long newRowId = db.insert("users", null, values);

4. 更新数据

使用 update 方法来更新数据。

SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("age", 31); // 更新年龄为31
String whereClause = "id = ?"; // 更新条件为id等于某个值
String[] whereArgs = {String.valueOf(newRowId)}; // id的值
int count = db.update("users", values, whereClause, whereArgs);

5. 删除数据

使用 delete 方法来删除数据。

SQLiteDatabase db = dbHelper.getWritableDatabase();
String whereClause = "id = ?"; // 删除条件为id等于某个值
String[] whereArgs = {String.valueOf(newRowId)}; // id的值
int count = db.delete("users", whereClause, whereArgs);

6. 查询数据

使用 query 方法来查询数据。

SQLiteDatabase db = dbHelper.getReadableDatabase();
String[] projection = {"id", "name", "age"}; // 需要查询的列名
String selection = "age > ?"; // 查询条件,例如年龄大于某个值
String[] selectionArgs = {"25"}; // 查询条件的值
Cursor cursor = db.query("users", projection, selection, selectionArgs, null, null, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
// 处理查询结果...
}
cursor.close(); // 记得关闭Cursor

7. 使用事务

SQLite 支持事务处理,可以确保一系列数据库操作要么全部成功,要么全部失败。

SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction(); // 开始事务
try {
// 执行一系列数据库操作...
db.setTransactionSuccessful(); // 如果所有操作都成功,则标记事务为成功
} catch (Exception e) {
// 处理异常...
} finally {
db.endTransaction(); // 结束事务,如果标记为成功,则提交事务,否则回滚事务
}

http://www.ppmy.cn/ops/48451.html

相关文章

如何舒适的使用VScode

安装好VScode后通常会很不好用&#xff0c;以下配置可以让你的VScode变得好用许多。 VScode的配置流程 1、设置VScode中文2、下载C/C拓展&#xff0c;使代码可以跳转3、更改编码格式4、设置滚轮缩放5、设置字体6、设置保存自动改变格式7、vscode设置快捷代码8、下载插件并学会…

MySQL备份与恢复:确保数据的安全与可靠性

引言: 数据的安全性和可靠性的重要性 在现代企业和组织中,数据已经成为了最重要的资产之一。数据的安全性和可靠性对于企业的运营至关重要。首先,数据的安全性保证了敏感信息不会落入错误的手中,防止了潜在的经济损失和法律风险。其次,数据的可靠性则确保了企业能够准确…

【RabbitMQ】RabbitMQ配置与交换机学习

文章目录 简介安装和部署1. 安装RabbitMQ2.创建virtual-host3. 添加依赖4.修改配置文件 WorkQueues模型1.编写消息发送测试类2.编写消息接收&#xff08;监听&#xff09;类3. 实现能者多劳 交换机Fanout交换机1.消息发送2.消息监听 Direct交换机1.消息发送2.消息接收 Topic交换…

leetcode hot100 之 最长公共子序列

题目 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&#xff08;…

PHP开发的爱情盲盒交友系统网站源码

源码介绍 PHP开发的爱情盲盒交友系统网站源码 独立后台 源码截图 源码下载 PHP开发的爱情盲盒交友系统网站源码

Linux -- 了解 vim

目录 vim Linux 怎么编写代码&#xff1f; 了解 vim 的模式 什么是命令模式&#xff1f; 命令模式下 vim 的快捷键&#xff1a; 光标定位&#xff1a; 复制粘贴&#xff1a; 删除及撤销&#xff1a; 注释代码&#xff1a; 什么是底行模式&#xff1f; ​编辑 ​编辑…

电脑桌面上用来记事的便签软件

便签软件已成为我们日常生活中不可或缺的记录工具。想象一下&#xff0c;在繁忙的工作中&#xff0c;你突然需要记下一个重要事项或临时想法&#xff0c;这时&#xff0c;一个便捷、高效的便签软件就显得尤为重要。它能帮助我们迅速捕捉信息&#xff0c;轻松管理琐碎事务&#…

Vite和Webpack的区别是什么,你站队谁?

Vite和Webpack有很多相同之处&#xff0c;也有区别&#xff0c;很多老铁分不清&#xff0c;贝格前端工场借助此文为大家详细介绍一下。 一、关于Vite和Webpack Vite和Webpack都是前端开发中常用的构建工具&#xff0c;用于将源代码转换为可在浏览器中运行的静态资源。它们在一…