问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Android Studio数据库开发指南:SQLite与Room库详解

创作时间:
作者:
@小白创作中心

Android Studio数据库开发指南:SQLite与Room库详解

引用
1
来源
1.
https://docs.pingcode.com/baike/1746430

在Android Studio中创建数据库的步骤包括:使用SQLite、Room库、数据库设计、数据存储、数据操作。这些步骤帮助开发者在应用中高效管理数据。下面是详细描述其中的一个关键点——使用Room库

一、SQLite数据库

1.1、什么是SQLite

SQLite是一个轻量级的关系型数据库,它是开源的、跨平台的,并且不需要独立的服务器进程。它非常适合移动应用程序,因为它占用的资源非常少。

1.2、在Android中使用SQLite

在Android中,SQLite数据库是内置的,并且可以通过SQLiteOpenHelper类来管理数据库的创建和版本控制。SQLiteOpenHelper是一个抽象类,你需要创建一个子类来实现两个方法:onCreateonUpgrade

1.2.1、创建SQLiteOpenHelper子类
public class MyDatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "example.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 CREATE_TABLE = "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)";
        db.execSQL(CREATE_TABLE);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS users");
        onCreate(db);
    }
}
1.2.2、使用SQLiteOpenHelper进行数据库操作
MyDatabaseHelper dbHelper = new MyDatabaseHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 插入数据
ContentValues values = new ContentValues();
values.put("name", "John");
values.put("age", 30);
db.insert("users", null, values);
// 查询数据
Cursor cursor = db.query("users", null, null, null, null, null, null);
while (cursor.moveToNext()) {
    String name = cursor.getString(cursor.getColumnIndex("name"));
    int age = cursor.getInt(cursor.getColumnIndex("age"));
}
cursor.close();

二、Room库

2.1、什么是Room

Room是Google推出的一个持久性库,它是Android Jetpack的一部分。Room提供了一个抽象层来简化对SQLite数据库的访问,并且提供了编译时的SQL查询验证和强类型安全。

2.2、在Android中使用Room

使用Room库需要三个主要组件:实体(Entity)、数据访问对象(DAO)和数据库(Database)。

2.2.1、添加依赖

首先,在build.gradle文件中添加Room库的依赖:

dependencies {
    implementation "androidx.room:room-runtime:2.3.0"
    annotationProcessor "androidx.room:room-compiler:2.3.0"
}
2.2.2、创建实体类

实体类表示数据库中的表,每个字段表示表中的一列。

@Entity
public class User {
    @PrimaryKey(autoGenerate = true)
    public int id;
    public String name;
    public int age;
}
2.2.3、创建DAO接口

DAO接口定义了访问数据库的方法。Room会在编译时生成这些方法的实现。

@Dao
public interface UserDao {
    @Insert
    void insert(User user);
    @Query("SELECT * FROM User")
    List<User> getAllUsers();
}
2.2.4、创建数据库类

数据库类包含数据库的持久化对象,并且作为应用程序的主要访问点。

@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
    public abstract UserDao userDao();
}
2.2.5、使用Room数据库
AppDatabase db = Room.databaseBuilder(context, AppDatabase.class, "example.db").build();
UserDao userDao = db.userDao();
// 插入数据
User user = new User();
user.name = "John";
user.age = 30;
userDao.insert(user);
// 查询数据
List<User> users = userDao.getAllUsers();
for (User u : users) {
    String name = u.name;
    int age = u.age;
}

三、数据库设计

3.1、表和列的设计

在设计数据库时,应该考虑表和列的名称、数据类型以及它们之间的关系。良好的数据库设计可以提高数据访问的效率,并且减少数据冗余。

3.2、索引和约束

索引可以提高查询的效率,但也会增加插入和更新操作的开销。约束(例如主键、外键和唯一约束)可以保证数据的完整性和一致性。

四、数据存储

4.1、插入数据

插入数据是数据库操作中最基本的操作之一。在Room中,插入数据可以使用@Insert注解来标记DAO方法。

@Insert
void insert(User user);

4.2、查询数据

查询数据是最常见的数据库操作之一。Room提供了@Query注解来标记查询方法。

@Query("SELECT * FROM User WHERE name = :name")
User findByName(String name);

五、数据操作

5.1、更新数据

更新数据可以使用@Update注解来标记DAO方法。

@Update
void update(User user);

5.2、删除数据

删除数据可以使用@Delete注解来标记DAO方法。

@Delete
void delete(User user);

通过以上步骤,你可以在Android Studio中创建和管理数据库。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号