【问题标题】:mysql query in java with MBROVERLAP使用 MBROVERLAP 在 java 中的 mysql 查询
【发布时间】:2013-03-30 18:32:51
【问题描述】:

我尝试运行这个 mysql 查询并且我有这个错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在 'SET @r2 = 附近使用正确的语法 GeomFromText('多边形((1 1,5 1,5 5,1 5,1 1))');选择 MBROVERLAPS(@r1' 在第 2 行

代码:

public String getoverlap(Rectangle recA, Rectangle recB){
    String result = "-1";
    String query;

    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);" ;

     System.out.println("query--:\n "+query);


     try {
        this.statement = this.connection.createStatement();
        ResultSet  rs = this.statement.executeQuery(query);
        System.out.println("kkk:" +rs.toString());

        if(rs!=null){
            result = rs.getString("MBROVERLAPS(@r1,@r2)");
        }
        else{
            System.out.println("Debug: lathos sthn getoverlap");
        }

         statement.close();
    } catch (SQLException ex) {
        System.out.println("debug: sqlEcxeption");
        Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
    }

     return result;
}

问题出在哪里?

【问题讨论】:

    标签: java mysql


    【解决方案1】:

    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 查询字符串中使用分号分隔。

    【讨论】:

      猜你喜欢
      • 2018-06-26
      • 1970-01-01
      • 2016-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多