Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

267
Visualizações
Sala de Android: seleccione la consulta con ME GUSTA

Estoy tratando de hacer una consulta para buscar todos los objetos cuyos nombres contienen texto:

 @Query("SELECT * FROM hamster WHERE name LIKE %:arg0%") fun loadHamsters(search: String?): Flowable<List<Hamster>>

Mensajes:

 Error:no viable alternative at input 'SELECT * FROM hamster WHERE name LIKE %' Error:There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (near "%": syntax error) Error:Unused parameter: arg0

También estoy intentando:

 @Query("SELECT * FROM hamster WHERE name LIKE '%:arg0%'") fun loadHamsters(search: String?): Flowable<List<Hamster>>

Mensajes:

 Error:Unused parameter: arg0

¿Cómo arreglar esto?

over 4 years ago · Santiago Trujillo
4 Respostas
Responde à pergunta

0

Room solo admite el parámetro de vinculación con nombre: nombre para evitar cualquier confusión entre los parámetros del método y los parámetros de vinculación de la consulta.

Room vinculará automáticamente los parámetros del método en los argumentos de vinculación. Esto se hace haciendo coincidir el nombre de los parámetros con el nombre de los argumentos de vinculación.

 @Query("SELECT * FROM user WHERE user_name LIKE :name AND last_name LIKE :last") public abstract List<User> findUsersByNameAndLastName(String name, String last);
over 4 years ago · Santiago Trujillo Relatório

0

Algunos ejemplos de palabras clave LIKE usando in dao con Room Database.

  1. Empezar con Search_Query

     @Query("SELECT * FROM hamster WHERE name LIKE :search_query || '%'") fun loadHamsters(search_query: String?): Flowable<List<Hamster>>
  2. Terminar con Search_Query

     @Query("SELECT * FROM hamster WHERE name LIKE '%' || :search_query ") fun loadHamsters(search_query: String?): Flowable<List<Hamster>>
  3. Obtener todos los que tienen Search_Query

     @Query("SELECT * FROM hamster WHERE name LIKE '%' || :search_query || '%'") fun loadHamsters(search_query: String?): Flowable<List<Hamster>>
  4. Use NOT LIKE para excepto los datos que tienen Search_Query

     @Query("SELECT * FROM hamster WHERE name NOT LIKE '%' || :search_query || '%'") fun loadHamsters(search_query: String?): Flowable<List<Hamster>>
over 4 years ago · Santiago Trujillo Relatório

0

Debe encerrar los caracteres % en su consulta de entrada, no en la consulta en sí.

Por ejemplo, prueba esto:

 @Query("SELECT * FROM hamster WHERE name LIKE :arg0") fun loadHamsters(search: String?): Flowable<List<Hamster>>

Entonces su valor String search debería verse así:

 search = "%fido%"; loadHamsters(search);

Además, el nombre del parámetro de enlace debe coincidir con el nombre de la variable, por lo que en lugar de arg0 debería verse así:

 @Query("SELECT * FROM hamster WHERE name LIKE :search") fun loadHamsters(search: String?): Flowable<List<Hamster>>
over 4 years ago · Santiago Trujillo Relatório

0

Simplemente puede concatenar usando la concatenación de cadenas SQLite.

 @Query("SELECT * FROM hamster WHERE name LIKE '%' || :search || '%'") fun loadHamsters(search: String?): Flowable<List<Hamster>>
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda