Android 中调用数据库
在 Android 开发中,数据库是一个非常重要的组件,它允许应用程序存储和管理大量的数据,本文将详细介绍如何在 Android 中调用和使用 SQLite 数据库。
1. 简介
SQLite 是一种轻量级的、嵌入式的关系型数据库管理系统,广泛应用于移动设备和嵌入式系统中,Android 平台内置了对 SQLite 的支持,使得开发者可以轻松地在应用中使用数据库。
2. SQLiteOpenHelper 类
SQLiteOpenHelper
是一个帮助管理数据库版本的辅助类,它提供了创建和升级数据库的方法。
1 创建子类
我们需要创建一个SQLiteOpenHelper
的子类:
public class MyDatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.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) { // 创建表 String createTable = "CREATE TABLE mytable (id INTEGER PRIMARY KEY, name TEXT)"; db.execSQL(createTable); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 升级数据库 db.execSQL("DROP TABLE IF EXISTS mytable"); onCreate(db); } }
2 获取实例
为了使用MyDatabaseHelper
,我们需要先获取其实例:
MyDatabaseHelper dbHelper = new MyDatabaseHelper(this);
3. SQLiteDatabase 类
SQLiteDatabase
类提供了对 SQLite 数据库进行操作的方法,包括插入、查询、更新和删除数据。
1 获取数据库对象
通过SQLiteOpenHelper
的实例,我们可以获取到SQLiteDatabase
对象:
SQLiteDatabase db = dbHelper.getWritableDatabase();
2 插入数据
插入数据可以使用insert
方法:
ContentValues values = new ContentValues(); values.put("name", "Alice"); long newRowId = db.insert("mytable", null, values);
3 查询数据
查询数据可以使用query
方法:
Cursor cursor = db.query("mytable", null, null, null, null, null, null); while (cursor.moveToNext()) { int id = cursor.getInt(0); String name = cursor.getString(1); } cursor.close();
4 更新数据
更新数据可以使用update
方法:
ContentValues values = new ContentValues(); values.put("name", "Bob"); String selection = "id = ?"; String[] selectionArgs = {String.valueOf(rowId)}; int count = db.update("mytable", values, selection, selectionArgs);
5 删除数据
删除数据可以使用delete
方法:
int count = db.delete("mytable", "id = ?", new String[]{String.valueOf(rowId)});
4. Room 持久层库
Room 是 Google 官方推出的一个持久层库,旨在简化 SQLite 数据库的操作,与直接使用 SQLite 相比,Room 提供了更高层次的抽象和更好的类型安全性。
1 添加依赖
在项目的build.gradle
文件中添加 Room 的依赖:
dependencies { implementation 'androidx.room:room-runtime:2.3.0' annotationProcessor 'androidx.room:room-compiler:2.3.0' }
2 定义实体
我们定义一个实体类:
@Entity(tableName = "mytable") public class MyEntity { @PrimaryKey(autoGenerate = true) public int id; public String name; }
4.3 定义 DAO(Data Access Object)
我们定义一个 DAO 接口:
@Dao public interface MyDao { @Insert void insert(MyEntity entity); @Query("SELECT * FROM mytable") List<MyEntity> getAll(); }
4 定义数据库类
我们定义一个数据库类:
@Database(entities = {MyEntity.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract MyDao myDao(); }
5 获取数据库实例
为了使用 Room 数据库,我们需要先获取其实例:
AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "mydatabase").allowMainThreadQueries().build();
5. 归纳
本文介绍了如何在 Android 中调用和使用 SQLite 数据库,包括使用SQLiteOpenHelper
和SQLiteDatabase
类进行基本的数据库操作,以及使用 Room 持久层库进行更高级别的数据库操作,希望本文对你有所帮助!
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1261297.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复