繁体   English   中英

SQLite 数据库:在 Android Studio 内的多个活动之间写入和读取数据

[英]SQLite database: Writing and reading data between multiple activities within Android Studio

使用 Android 工作室和 SQLite 数据库:

我有一个活动填充 SQLite 数据库,每个条目有几种数据类型。

我希望能够有另一个可以读取这些数据的活动,但是我不确定如何通过另一个活动访问同一个数据库。 目前我不确定是否应该将它作为捆绑传递或是否有访问方法。

提前致谢

根据您的需要,有多种方法。 通常是:

  1. 您将数据保存到数据库并返回主键
  2. 如果您需要其他活动来使用数据,请通过startActivity(new Intent(context, OtherClass.class).putExtra("id", <id from db>));传递主键
  3. 在另一个活动中,您执行int id= getIntent().getIntExtra("id",0);
  4. 无论您如何访问数据库,都对检索到的id运行SELECT查询以从 SQLite 获取数据

也许这个 Room 教程会有所帮助: https://developer.android.com/training/data-storage/room/index.html

首先创建一个新的 class 例如:- 数据

创建public static String userid; 在里面

然后使用Data.userid = sqlitedata然后你可以在项目中的任何地方使用Data.userid它将返回相同的值......

这超级容易。

假设这是您使用 Room 库以这种方式定义的数据库。

@Database(
entities = [UserSchema::class],
version = 1,
exportSchema = false)

abstract class UserDatabase : RoomDatabase() {
abstract  fun userDoa(): UserDao

companion object {
    private var instance: UserDatabase? = null
    fun getInstance(context: Context): UserDatabase? {
        if (instance == null) {
            synchronized(LmdDatabase::class) {
                instance = Room.databaseBuilder(
                    context,
                    UserDatabase::class.java,
                    Constants.USER_DATABASE
                ).addMigrations()
                    .fallbackToDestructiveMigration()
                    .build()
            }
        }
        return instance
    }

    fun destroyInstance() {
        instance?.close()
        instance = null
    }
}
}

这是您的用户实体定义:

@Entity(tableName = "user_table")
data class UserSchema(
    @PrimaryKey
    @ColumnInfo(name = "user_id") val userId:String
)

这是您从数据库中删除和删除用户对象的方法

@Dao
interface UserDao {

    @Insert(onConflict = OnConflictStrategy.IGNORE)
    suspend fun insert(vararg userSchema: UserSchema)

    @Delete
    suspend fun delete(vararg userSchema: UserSchema)

    @Query("SELECT * FROM user_table")
    fun getAll(): LiveData<List<UserSchema>>
}

您的第一个活动可以从协程上下文调用 insert 以使用suspend insert方法将数据(例如用户)插入表中。 其他活动可以使用getAll()方法观察该表或数据库的数据更改

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM