Android Room: كيفية استخدام LIKE بشكل صحيح في الاستعلامات مع المعاملات؟
مرحبًا بالجميع! أنا مبتدئ في تطوير Android باستخدام Kotlin وأستخدم Room للعمل مع قاعدة البيانات المحلية. لدي كيان User، وأريد تنفيذ بحث عن المستخدمين بالاسم باستخدام عامل SQL LIKE.
إليك كيان DAO الخاص بي:
@Dao
interface UserDao {
@Query("SELECT * FROM users WHERE name LIKE '%:searchQuery%'")
suspend fun searchUsers(searchQuery: String): List<User>
}
أقوم باستدعاء هذه الطريقة من ViewModel:
class UserViewModel(private val userDao: UserDao) : ViewModel() {
fun search(query: String) {
viewModelScope.launch {
val users = userDao.searchUsers(query)
// معالجة النتائج
}
}
}
المشكلة هي أن الاستعلام لا يعيد أي نتائج، على الرغم من وجود سجلات في قاعدة البيانات تحتوي على أسماء تتضمن السلسلة المطلوبة. حاولت تمرير قيم مختلفة — أسماء كاملة، أجزاء من السلاسل — ولم ينجح شيء.