gpt4 book ai didi

java - 尽管查询不同,Sql2o仍然返回同一组数据

转载 作者:行者123 更新时间:2023-11-29 18:38:42 24 4
gpt4 key购买 nike

我刚开始将 SQL2O 与 MySQL 结合使用,但遇到了一个奇怪的问题,不同的查询返回相同的结果。 SQL2O 是否返回缓存结果?

我的代码如下所示:

String sql = "SELECT * " +
"FROM report_A" +
"ORDER BY :order :sequence "+
"LIMIT :from, :limit";
int limit = 5;
int startIndex = (page-1)*limit;
String sequence = "DESC";
try(Connection con = sql2o.open()) {

if(order.contains("-")){
order = order.replace("-", "");
sequence= " ASC";
}
Query query= con.createQuery(sql)
.addParameter("from", startIndex)
.addParameter("limit", limit)
.addParameter("order", order)
.addParameter("sequence", sequence);

List<ReportA> result = query.executeAndFetch(ReportA.class);
con.close();

这 4 个参数总是变化,但输出保持不变。我已经验证了mysql工作台中的查询,数据不同,但是SQL2O返回给我相同的数据集。我错过了什么吗?

最佳答案

您的查询无效。它不会编译并在执行时抛出 Sql2oException。

问题是,基本上,您只能将参数用于,而不能用于表名、列名或其他关键字(如“ASC”)。更改这些将更改查询的结构

可以通过良好的旧字符串连接来构造具有可变结构的查询,即

String sql = "SELECT * " +
"FROM report_A" +
"ORDER BY " + order " " + SEQUENCE +
"LIMIT :from, :limit";

然后

query(sql)
.addParameter("from", from)
.addParameter("limit", limit)
.executeAndFetch(...)

关于java - 尽管查询不同,Sql2o仍然返回同一组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45071107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com