16 数据存储之SQLite数据库

在上一篇中,我们讨论了使用 SharedPreferences 进行简单的应用数据存储。然而,对于更复杂的数据需求,SQLite 数据库是一个更合适的选择。SQLite 是一个轻量级的嵌入式关系数据库,尤其适合Android应用用于存储结构化数据。让我们深入了解如何在Android应用中使用 SQLite

1. 什么是SQLite?

SQLite 是一种C语言编写的关系型数据库,它将整个数据库存储在一个单一的文件中。由于其轻便、快速、无需安装的特点,它被广泛应用于Android开发中。

2. SQLite的用法

在Android中,我们需要创建一个数据库并实施增、删、改、查等基本操作。以下步骤将帮助你在Android应用中实现这些功能。

2.1 创建数据库和表

首先,我们需要创建一个 SQLiteOpenHelper 类来管理数据库的创建和版本管理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "my_database.db";
private static final int DATABASE_VERSION = 1;

public static final String TABLE_NAME = "users";
public static final String COLUMN_ID = "id";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_AGE = "age";

public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
String createTable = "CREATE TABLE " + TABLE_NAME + " (" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
COLUMN_NAME + " TEXT," +
COLUMN_AGE + " INTEGER)";
db.execSQL(createTable);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}

在上面的代码中,我们创建了一个 users 表格,其中包含 idnameage 三个列。

2.2 添加数据

接下来,我们可以通过插入操作将数据添加到表中。

1
2
3
4
5
6
7
8
9
public void addUser(String name, int age) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_NAME, name);
values.put(COLUMN_AGE, age);

db.insert(TABLE_NAME, null, values);
db.close();
}

2.3 查询数据

我们还可以通过查询操作从表中检索数据。

1
2
3
4
public Cursor getAllUsers() {
SQLiteDatabase db = this.getReadableDatabase();
return db.query(TABLE_NAME, null, null, null, null, null, null);
}

2.4 更新数据

此外,我们可以更新现有数据。例如,更新某个用户的年龄。

1
2
3
4
5
6
7
8
9
public void updateUser(int id, String name, int age) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_NAME, name);
values.put(COLUMN_AGE, age);

db.update(TABLE_NAME, values, COLUMN_ID + " = ?", new String[]{String.valueOf(id)});
db.close();
}

2.5 删除数据

最后,我们也可以通过删除操作移除数据。

1
2
3
4
5
public void deleteUser(int id) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_NAME, COLUMN_ID + " = ?", new String[]{String.valueOf(id)});
db.close();
}

3. 使用案例

下面是一个完整的示例,展示了如何在 Activity 中使用上述 SQLite 方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class MainActivity extends AppCompatActivity {
MyDatabaseHelper dbHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

dbHelper = new MyDatabaseHelper(this);
dbHelper.addUser("Alice", 30);
dbHelper.addUser("Bob", 25);

Cursor cursor = dbHelper.getAllUsers();
if (cursor.moveToFirst()) {
do {
int id = cursor.getInt(cursor.getColumnIndex(MyDatabaseHelper.COLUMN_ID));
String name = cursor.getString(cursor.getColumnIndex(MyDatabaseHelper.COLUMN_NAME));
int age = cursor.getInt(cursor.getColumnIndex(MyDatabaseHelper.COLUMN_AGE));
// 这里可以将数据展示到UI组件中
} while (cursor.moveToNext());
}
cursor.close();
}
}

在实际应用中,通常会在单独的线程或使用 AsyncTask 进行数据库操作,以保持应用的流畅性。

4. 总结

在这一章中,我们详细介绍了如何在Android应用中使用 SQLite 数据库进行数据存储管理。通过创建 SQLiteOpenHelper 子类、执行增、删、改、查操作,你现在可以灵活地处理结构化数据。

下一章将讨论另一种数据存储方式——文件存储。

16 数据存储之SQLite数据库

https://zglg.work/android-app-dev/16/

作者

IT教程网(郭震)

发布于

2024-08-14

更新于

2024-08-15

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论