gpt4 book ai didi

java - 如何找出房间数据库中是否已存在记录

转载 作者:行者123 更新时间:2023-11-30 12:08:42 24 4
gpt4 key购买 nike

我从 sql db 搬到了房间。我不知道如何检查数据库中是否存在项目。如何使用 Room 编写此代码?

fun existsCheck(place: Places): Boolean {
val db= this.readableDatabase
val query = "SELECT * FROM $TABLE_PLACES WHERE $COLUMN_LAT = ${place.lat} AND $COLUMN_LNG = ${place.lng}"
val cursor = db.rawQuery(query, null)
if(cursor.count > 0){
cursor.close()
db.close()
return true
}
cursor.close()
db.close()
return false
}

我试图用这段代码实现这一点,但总是返回 FALSE

@Query("SELECT name FROM place WHERE lat = :lat AND lng = :lng")
fun exist(lat: Double?, lng: Double?): Flowable<String>

override fun save() {
Observable.just(dao)
.subscribeOn(Schedulers.io())
.subscribe { dao.insert(place) }
}

override fun itemExists(lat: Double?, lng: Double?): Single<Boolean> =
dao.exist(lat, lng)
.flatMapSingle { Single.just(it.isNotEmpty()) }
.onErrorReturn { false }
.first(false)



override fun delete() {
dao.deleteByLat(place.lat)
}

override fun saveClicked() {
var boolean = false
itemExists(place.lat, place.lng)
.subscribeOn(Schedulers.io())
.map { it -> boolean = it }
if (boolean){
delete()
v.setImageNotSaved()
} else {
save()
v.setImageSaved()
}

}

最佳答案

这很好用

 override fun itemExists() {
Observable.just(dao)
.subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.map { it -> it.exist(place.lat, place.lng) }
.subscribe( { it -> saveClicked(true) },
{error -> saveClicked(false)})
}

关于java - 如何找出房间数据库中是否已存在记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54211401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com