簡體   English   中英

SQLite從LIKE語句中選擇不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM