[英]Android Room Sqlite no such column than using equal sign (=) in WHERE condition
這有效:
@Query("SELECT *FROM users " + " WHERE name1 LIKE :blabla")
List<User> findUsersByName(String blabla);
這不適用於:
@Query("SELECT *FROM users " + " WHERE name1=blabla")
List<User> findUsersByName(String blabla);
並帶來以下錯誤消息:
“錯誤:(28,16)錯誤:查詢存在問題:[SQLITE_ERROR] SQL錯誤或缺少數據庫(沒有此類列:blabla)”
感謝您的幫助。
這是我完整的代碼:
UserDao.java:
@Dao
public interface UserDao {
@Insert
void insert(User user);
@Query("SELECT *FROM users " + " WHERE name1 = blabla")
List<User> findUsersByName(String blabla);
@Query("SELECT *FROM users")
List<User> getAllUsers();
@Query("SELECT COUNT(user_id) FROM users")
int getNumberOfUsers();
@Delete
void delete(User user);
}
MyDatabase.java:
@Database(entities = {User.class}, version = 1)
public abstract class MyDatabase extends RoomDatabase{
public abstract UserDao getUserDao();
}
User.java
@Entity(tableName = "users")
public class User {
@PrimaryKey
@ColumnInfo(name = "user_id")
private int id;
@ColumnInfo(name = "name1")
private String name;
public int getId() {
return id;
}
public String getName() {
return name;
}
public User(int id, String name){
this.id=id;
this.name=name;
}
}
更換:
@Query("SELECT *FROM users " + " WHERE name1 = blabla")
List<User> findUsersByName(String blabla);
有:
@Query("SELECT *FROM users " + " WHERE name1 = :blabla")
List<User> findUsersByName(String blabla);
IOW,您想念冒號了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.