用mbr实现java中的mysql查询

用mbr实现java中的mysql查询,java,mysql,Java,Mysql,我尝试运行此mysql查询,但出现以下错误: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您有一个 SQL语法错误;检查与您的产品相对应的手册 MySQL服务器版本,以便在“SET@r2”附近使用正确的语法= GeomFromText(‘多边形((11,51,55,15,11)));选择 MBR重叠(@r1'位于第2行 代码: 问题出在哪里?JDBC API没有模拟典型的SQL客户机-您无法以现有方式将多个语句合并在一起。具

我尝试运行此mysql查询,但出现以下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您有一个 SQL语法错误;检查与您的产品相对应的手册 MySQL服务器版本,以便在“SET@r2”附近使用正确的语法= GeomFromText(‘多边形((11,51,55,15,11)));选择 MBR重叠(@r1'位于第2行

代码:

问题出在哪里?

JDBC API没有模拟典型的SQL客户机-您无法以现有方式将多个语句合并在一起。具体而言,此查询:

query =    
    "SET @r1 = GeomFromText(\'Polygon((1 1, 5 1,5 5,1 5,1 1))\');\n" +
    "SET @r2 = GeomFromText(\'Polygon((1 1,5 1,5 5,1 5,1 1))\');\n" +
    "select MBROVERLAPS(@r1,@r2);" ;
需要拆分,每个语句单独运行。如图所示,通过语句直接运行每个部分:

statement = connection.createStatement();
statement.executeQuery("SET @r1 = GeomFromText(\'Polygon((1 1, 5 1,5 5,1 5,1 1))\')";
statement.executeQuery("SET @r2 = GeomFromText(\'Polygon((1 1,5 1,5 5,1 5,1 1))\')");
ResultSet  rs = statement.executeQuery("SELECT MBROVERLAPS(@r1,@r2)");
System.out.println(rs.toString());
一个致命的缺陷是,您永远不应该在JDBC查询字符串中使用分号

statement = connection.createStatement();
statement.executeQuery("SET @r1 = GeomFromText(\'Polygon((1 1, 5 1,5 5,1 5,1 1))\')";
statement.executeQuery("SET @r2 = GeomFromText(\'Polygon((1 1,5 1,5 5,1 5,1 1))\')");
ResultSet  rs = statement.executeQuery("SELECT MBROVERLAPS(@r1,@r2)");
System.out.println(rs.toString());