[英]SQLite select from LIKE statement not working?
當我查看數據庫並運行此查詢時,我得到了預期的結果。
SELECT * FROM users WHERE options LIKE '%[-15,-3]%';
但是,當我使用如下所示的預准備語句時,uuid為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);
}
對於上面的代碼,結果集中不返回任何內容。 這很奇怪,因為我在SQLite查看器中使用了相同的查詢,並返回了正確的行。 我怎么解決這個問題? 我沒有看到問題。
UPDATE
當我在預准備語句中直接使用"SELECT * FROM factions WHERE claims LIKE '%[-15,-3]%'"
而不是變量時,它可以正常工作。 為什么我不能使用字符串變量? 我檢查了變量,它打印到控制台很好。
經過大量的反復試驗,我解決了這個問題,原來我應該一直使用?
並設置字符串。
PreparedStatement ps = SQLite.connection.prepareStatement(
"SELECT * FROM users WHERE options LIKE ?"
);
ps.setString(1, "%" + opt + "%");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.