Michael Haas
Michael Haas

Reputation: 103

Android Room Sqlite no such column than using equal sign (=) in WHERE condition

This works:

@Query("SELECT *FROM users " + " WHERE name1 LIKE :blabla") 
List<User> findUsersByName(String blabla);

This works not:

@Query("SELECT *FROM users " + " WHERE name1=blabla")
List<User> findUsersByName(String blabla);

And brings this Error-Message:

"Error:(28, 16) error: There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (no such column: blabla)"

I'm thankful for any help.

Here my complete code:

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;

}

}

Upvotes: 3

Views: 3372

Answers (1)

CommonsWare
CommonsWare

Reputation: 1007286

Replace:

@Query("SELECT *FROM users " + " WHERE name1 = blabla")
List<User> findUsersByName(String blabla);

with:

@Query("SELECT *FROM users " + " WHERE name1 = :blabla")
List<User> findUsersByName(String blabla);

IOW, you are missing the colon.

Upvotes: 4

Related Questions