gpt4 book ai didi

Java 6 解析例程正在截断 SQLquery

转载 作者:行者123 更新时间:2023-11-29 10:58:57 28 4
gpt4 key购买 nike

这是关于Java和MySQL的问题。我有这样的摘录:

String selectString = "select";
int selectIndex = config.getMappingSql().toLowerCase().indexOf(selectString);
int fromIndex = config.getMappingSql().toLowerCase().indexOf("from");

String subSql =config.getMappingSql().substring(selectIndex + Const.INT_6, fromIndex);

String callIdField = "";
String[] fields = subSql.split(",");

for (String field : fields) {

if (field.contains(" " + pk)) {
callIdField = field;
break;
}
}

String idSql = "select " + callIdField + " " + config.getMappingSql().substring(fromIndex) + " order by " + pk

变量getMappingSql中的查询是:

SELECT orktape.id, orktape.filename, orkuser.lastname from orksegment left join orktape on orksegment.tape_id=orktape.id left join orkuser on orksegment.user_id=orkuser.id where orktape.mediatype = 'A'

但是结果是:

select  from orksegment left join orktape on orksegment.tape_id=orktape.id left join orkuser on orksegment.user_id=orkuser.id where orktape.mediatype = 'A' order by id

我不是 Java 程序员,但我认为代码由于分隔符(表名和列名之间的句点)而丢弃了 “from” 之前的值。如果这是真的,有没有办法解决它,或者我必须重新编写查询?

最佳答案

不知道pk我无法确定测试,但问题是你的for循环

       for (String field : fields)
{
if (field.contains(" " + pk))
{
callIdField = field;
break;
}
}

最多 callIdField 将设置为其中 1 个字段。由于这没有设置任何内容,因此您的包含逻辑一定是错误的。修复此问题以开始,然后您需要随时连接 callIdField 或使用 StringBuilder。

关于Java 6 解析例程正在截断 SQLquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42581518/

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