Sqlite数据库基本使用

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. 添加数据

使用 SQLiteDatabaseinsert 方法来添加数据。

|---|--------------------------------------------------------|
| | 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(); // 结束事务,如果标记为成功,则提交事务,否则回滚事务 |
| | } |

相关推荐
小吴编程之路3 小时前
MySQL 索引核心特性深度解析:从底层原理到实操应用
数据库·mysql
~莫子3 小时前
MySQL集群技术
数据库·mysql
凤山老林3 小时前
SpringBoot 使用 H2 文本数据库构建轻量级应用
java·数据库·spring boot·后端
就不掉头发3 小时前
Linux与数据库进阶
数据库
与衫3 小时前
Gudu SQL Omni 技术深度解析
数据库·sql
咖啡の猫4 小时前
Redis桌面客户端
数据库·redis·缓存
oradh4 小时前
Oracle 11g数据库软件和数据库静默安装
数据库·oracle
what丶k4 小时前
如何保证 Redis 与 MySQL 数据一致性?后端必备实践指南
数据库·redis·mysql
_半夏曲4 小时前
PostgreSQL 13、14、15 区别
数据库·postgresql
把你毕设抢过来4 小时前
基于Spring Boot的社区智慧养老监护管理平台(源码+文档)
数据库·spring boot·后端