gpt4 book ai didi

java - MySQL MBRContains 语句抛出 SQLException 错误

转载 作者:行者123 更新时间:2023-11-29 07:23:13 26 4
gpt4 key购买 nike

我正在做一个Java项目,我们使用它的sql库函数从MySQL服务器访问和查询。

引发问题的代码是:

String setBox = "SET @box = 
'Polygon((" + lx + " " + ry + ","
+ rx + " " + ry + ","
+ lx + " " + ly + ","
+ rx + " " + ly + ","
+ lx + " " + ry + "))';\n";

ResultSet regionResult = stmt.executeQuery(setBox +
"SELECT ItemID FROM ItemPoint WHERE MBRContains(GeomFromText(@box), Coords);\n");

错误发生在第二条语句 (ResultSetregionResult = ...)

我收到的错误是:

“com.mysql.jdbc.exception.jdbc4.MySQLSyntaxErrorException:您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本相对应的手册,以了解“SELECT ItemID FROM ItemPoint WHERE MBRContains( (GeomFromText(@box), Coords)' 第 2 行”

我不确定为什么会出现语法错误,因为我的基础是:http://dev.mysql.com/doc/refman/5.5/en/using-spatial-indexes.html .

我的MySQL服务器版本是:5.5.40-0ubuntu0.14.04.1 (Ubuntu)

最佳答案

你的问题不是MySql,而是PreparedStatement。您不能使用它来运行两个语句,就像您必须使用 CallableStatement

对于你的问题,它会是这样的:

String callString = "{ call SET @box = 'Polygon(( ? ?,
? ?,
? ?,
? ?,
? ?))';
SELECT ItemID
FROM ItemPoint
WHERE MBRContains(GeomFromText(@box), Coords); }";

CallableStatement callableStatement = con.prepareCall(callString);
callableStatement.setInt(1, lx);
callableStatement.setInt(2, ry);
callableStatement.setInt(3, rx);
callableStatement.setInt(4, ry);
callableStatement.setInt(5, lx);
callableStatement.setInt(6, ly);
callableStatement.setInt(7, rx);
callableStatement.setInt(8, ly);
callableStatement.setInt(9, lx);
callableStatement.setInt(10, ry);
ResultSet regionResult = callableStatement.executeQuery();

请注意,这可能不会按原来的方式工作。你可能需要改变一些东西,这是基本想法。我是凭内存做的,所以...

关于java - MySQL MBRContains 语句抛出 SQLException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35371212/

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