【问题标题】:SQLite database: Writing and reading data between multiple activities within Android StudioSQLite 数据库:在 Android Studio 中的多个活动之间写入和读取数据
【发布时间】:2019-11-13 12:26:32
【问题描述】:

使用 Android Studio 和 SQLite 数据库:

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

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

提前致谢

【问题讨论】:

  • 请添加一些代码示例,说明您当前如何将数据添加到 SQLite 数据库,因为有许多不同的方法可以做到这一点,这会影响您在其他活动中访问它的方式。

标签: android database sqlite android-activity


【解决方案1】:

首先创建一个新类 eg:- Data

在其中创建public static String userid;

然后使用Data.userid = sqlitedata,然后您可以在项目中的任何位置使用Data.userid,它将返回相同的值...

【讨论】:

  • 为此欢呼有很大帮助。我必须让我的 SQL 数据库助手成为公共静态变量。这使我能够在其他活动中导入数据库以供使用。
【解决方案2】:

这超级简单。

假设这是您使用 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() 方法观察该表或数据库的数据更改

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    相关资源
    最近更新 更多