簡體   English   中英

Android Room Sqlite沒有這樣的列,而不是在WHERE條件下使用等號(=)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM