Java SQLite select from LIKE语句不工作?
当我查看数据库并运行此查询时,我得到了预期的结果Java SQLite select from LIKE语句不工作?,java,sqlite,Java,Sqlite,当我查看数据库并运行此查询时,我得到了预期的结果 SELECT * FROM users WHERE options LIKE '%[-15,-3]%'; 但是,当我使用如下所示的准备好的语句时,uuid是空的 String opt = "[-15,-3]"; //example PreparedStatement ps = SQLite.connection.prepareStatement( "SELECT * FROM users WHERE options LIKE '
SELECT * FROM users WHERE options LIKE '%[-15,-3]%';
但是,当我使用如下所示的准备好的语句时,uuid是空的
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查看器中使用了相同的查询,它返回了正确的行。我怎样才能解决这个问题?我看不出有什么问题
更新
当我在prepared语句中直接使用“%[-15,-3]%”等声明所在的派系中的
“SELECT*”
而不是变量时,效果很好。为什么我不能使用字符串变量?我已经检查了变量,它可以很好地打印到控制台。经过多次尝试和错误后,我解决了它,结果发现我应该使用?
并设置字符串
PreparedStatement ps = SQLite.connection.prepareStatement(
"SELECT * FROM users WHERE options LIKE ?"
);
ps.setString(1, "%" + opt + "%");