java MySQL MBR包含抛出MySQLExceptionError的语句
我正在从事一个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");
第二条语句(ResultSet regionResult=…)中出现错误
我收到的错误是:
“com.mysql.jdbc.exception.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;请检查与您的mysql服务器版本相对应的手册,以了解第2行“从MBR包含((GeomFromText(@box),Coords)的ItemPoint中选择ItemID”附近用户的正确语法。”
我不确定为什么会出现语法错误,因为我是基于:http://dev.mysql.com/doc/refman/5.5/en/using-spatial-indexes.html
我的MySQL服务器版本是:5.5.40-0ubuntu0。14.04.1(Ubuntu)
# 1 楼答案
你的问题不是MySql,而是
PreparedStatement
。您不能使用它来运行这样的两个语句,您必须使用CallableStatement
对于您的问题,它将类似于:
请注意,这可能不是它的工作方式。你可能需要改变一些东西,这是基本的想法。我是凭记忆做的,所以
# 2 楼答案
我可以通过这样做来实现: