Po wyświetleniu bazy danych i uruchomieniu tego zapytania uzyskuję wyniki zgodnie z oczekiwaniami.Wybór SQLite z instrukcji LIKE nie działa?
SELECT * FROM users WHERE options LIKE '%[-15,-3]%';
Jednak kiedy używać przygotowaną instrukcję, jak widać poniżej, UUID jest null.
String opt = "[-15,-3]"; //example
PreparedStatement ps = SQLite.connection.prepareStatement(
"SELECT * FROM users WHERE options LIKE '%" + opt + "%'"
);
ResultSet rs = ps.executeQuery();
String uuid = null;
while (rs.next()){
uuid = rs.getString("member");
}
rs.close();
ps.close();
if(uuid != null){
System.out.println("not null: " + uuid);
return Database.getUser(UUID.fromString(uuid);
}
Dla powyższego kodu nic nie jest zwracane w zestawie wyników. Co jest bardzo dziwne, ponieważ użyłem tego samego zapytania z przeglądarką SQLite i zwróciłem odpowiednie wiersze. Jak mogę to rozwiązać? Nie widzę problemu.
UPDATE
Kiedy korzystać bezpośrednio "SELECT * FROM factions WHERE claims LIKE '%[-15,-3]%'"
w przygotowanym oświadczeniu zamiast zmiennej, to działa dobrze. Dlaczego nie mogę użyć zmiennej łańcuchowej? Sprawdziłem zmienną i drukuje do konsoli dobrze.