2015-02-01 15 views
5

Veritabanını görüntülediğimde ve bu sorguyu çalıştırdığımda sonuçları beklediğim gibi alıyorum.SQLite, LIKE deyiminden çalışmıyor?

SELECT * FROM users WHERE options LIKE '%[-15,-3]%'; 

Ancak, aşağıda görüldüğü gibi hazırlanmış bir deyim kullandığımda, uuid boştur.

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); 
} 

Yukarıdaki kod için sonuç kümesinde hiçbir şey döndürülmez. Bu çok garip çünkü aynı sorguyu bir SQLite görüntüleyici ile kullandım ve uygun satırları döndürdü. Bunu Nasıl Çözebilirim? Bir sorun görmüyorum. Ben doğrudan hazırlanmış deyimi yerine değişkeninde "SELECT * FROM factions WHERE claims LIKE '%[-15,-3]%'" kullandığınızda

GÜNCELLEME

, iyi çalışıyor. Neden bir string değişkeni kullanamıyorum? Değişkeni kontrol ettim ve konsola iyi basıyor.

cevap

6

Çok fazla deneme ve hata yaptıktan sonra çözdüm, bir ? kullanmalı ve dizeyi ayarlamalıyım.

PreparedStatement ps = SQLite.connection.prepareStatement(
     "SELECT * FROM users WHERE options LIKE ?" 
); 

ps.setString(1, "%" + opt + "%");