Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite数据库:在Android Studio中的多个活动之间写入和读取数据_Android_Database_Sqlite_Android Activity - Fatal编程技术网

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

SQLite数据库:在Android Studio中的多个活动之间写入和读取数据,android,database,sqlite,android-activity,Android,Database,Sqlite,Android Activity,使用Android studio和SQLite数据库: 我有一个活动,它用每个条目的一些数据类型填充SQLite数据库 我希望有另一个活动可以读取此数据,但是,我不确定如何通过另一个活动访问同一数据库。目前,我不确定是否应该将其作为包传递,或者是否有访问方法 提前感谢首先创建一个新类,例如:-数据 创建公共静态字符串userid在其中 然后使用Data.userid=sqlitedata,然后您可以在项目中的任何位置使用Data.userid,它将返回相同的值…这非常简单 假设这是使用Room

使用Android studio和SQLite数据库:

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

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


提前感谢

首先创建一个新类,例如:-数据

创建
公共静态字符串userid在其中

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

这非常简单

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

@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
)
这是从数据库中删除和删除用户对象的doa

@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>>
}
@Dao
接口用户DAO{
@插入(onConflict=OnConflictStrategy.IGNORE)
暂停趣味插入(vararg userSchema:userSchema)
@删除
暂停趣味删除(vararg userSchema:userSchema)
@查询(“从用户表中选择*)
fun getAll():LiveData
}

您的第一个活动可以使用
suspend insert
方法从协同程序上下文调用insert将数据(例如用户)插入表中。另一个活动可以使用
getAll()
method

观察该表或数据库的数据更改。请添加一些代码示例,说明您当前如何将数据添加到SQLite数据库,因为有许多不同的方法可以这样做,这会影响您在另一个活动中访问数据的方式。为此干杯会有很大帮助。我必须使我的SQL数据库助手成为公共静态变量。这使我能够在其他活动中导入数据库以供使用。