[英]SQLite database: Writing and reading data between multiple activities within Android Studio
使用 Android 工作室和 SQLite 数据库:
我有一个活动填充 SQLite 数据库,每个条目有几种数据类型。
我希望能够有另一个可以读取这些数据的活动,但是我不确定如何通过另一个活动访问同一个数据库。 目前我不确定是否应该将它作为捆绑传递或是否有访问方法。
提前致谢
根据您的需要,有多种方法。 通常是:
startActivity(new Intent(context, OtherClass.class).putExtra("id", <id from db>));
传递主键int id= getIntent().getIntExtra("id",0);
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.