Pergunta

Eu lutando para obter um parâmetro para trabalhar dentro de uma declaração como agora por horas! Eu estou usando um CachedRowSet, que eu entendo deve seguir as mesmas regras que um PreparedStatement.
Aqui está a consulta básica:

CachedRowSet cache;
String sql = "SELECT x " +
                "FROM   Y " +
             "WHERE z LIKE '?__'" 

cache.setCommand(sql);
cache.setString(1, "someString");

someString é um id conhecido, mas o banco de dados (por sinal é PostgreSQL) entrada tem um sufixo caractere desconhecido 2.

Foi útil?

Solução

Parâmetros espaços reservados dentro de aspas são ignoradas. Eles são interpretados como um literal "?". Se você usar um parâmetro, você deve colocar as aspas espaço reservado fora na expressão SQL.

Mas LIKE pode ser comparado a qualquer corda ou qualquer expressão que produz uma string. Por exemplo:

SELECT x FROM y WHERE z LIKE (? || '__')

Agora você poderia fornecer "someString" para o parâmetro, e então ele vai ser concatenado com o '__' string constante.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top