java – SQLite从LIKE语句中选择不起作用?

前端之家收集整理的这篇文章主要介绍了java – SQLite从LIKE语句中选择不起作用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我查看数据库并运行此查询时,我得到了预期的结果.
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 claim LIKE’%[ – 15,-3]%’”而不是变量时,它可以正常工作.为什么我不能使用字符串变量?我检查了变量,它打印到控制台很好.

解决方法

经过大量的反复试验,我解决了这个问题,原来我应该一直使用?并设置字符串.
PreparedStatement ps = sqlite.connection.prepareStatement(
        "SELECT * FROM users WHERE options LIKE ?"
);

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

猜你在找的Java相关文章