Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQLite select from LIKE语句不工作?_Java_Sqlite - Fatal编程技术网

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 + "%");