在上一篇中,我们讨论了使用 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
表格,其中包含 id
、name
和 age
三个列。
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)); } while (cursor.moveToNext()); } cursor.close(); } }
|
在实际应用中,通常会在单独的线程或使用 AsyncTask
进行数据库操作,以保持应用的流畅性。
4. 总结
在这一章中,我们详细介绍了如何在Android应用中使用 SQLite
数据库进行数据存储管理。通过创建 SQLiteOpenHelper
子类、执行增、删、改、查操作,你现在可以灵活地处理结构化数据。
下一章将讨论另一种数据存储方式——文件存储。