【问题标题】:Mysql query with '>=', '<=' statements in java page is returning null while query working fine in MySQL Console, Why?java页面中带有'>='、'<='语句的Mysql查询返回null,而查询在MySQL控制台中工作正常,为什么?
【发布时间】:2016-01-12 15:38:00
【问题描述】:

我在 wamp 服务器的 MySQL 控制台中尝试了相同的查询,函数中的另一个查询返回相同的值并返回结果,但它在 java 中返回 null,为什么? 我正在使用 eclipse 和 tomcat 版本 6,下面是我的代码:-

    public String startpgm(String x){

        String np       = null;
        String North    = null;
        String Wb_SWLat = null;
        String Wb_SWLon = null;
        String Wb_NELat = null;
        String Wb_NELon = null;

        String qryWb = "select SW_lat, SW_lon, NE_lat, NE_lon from tbl_zones where zone='west'";

//      String qrywest = "select priority from tbl_vcl";

        String qrywest = "select priority from tbl_vcl where latitude >=? and latitude <=? and longitude >=? and longitude<=?";

        try {
            Statement stmt = (Statement) conn.createStatement();

        ResultSet Wb=stmt.executeQuery(qryWb);//storing the result into result set
        while(Wb.next()){ // looping through the resultset

            Wb_SWLat=Wb.getString("SW_lat");
            Wb_NELat=Wb.getString("NE_lat");
            Wb_SWLon=Wb.getString("SW_lon");            
            Wb_NELon=Wb.getString("NE_lon");

            System.out.println("DBSWlat:"+Wb_SWLat);
            System.out.println("DBNElat:"+Wb_NELat);
            System.out.println("DBSWLon:"+Wb_SWLon);
            System.out.println("DBNELon:"+Wb_NELon);
        }



        PreparedStatement ps = conn.prepareStatement(qrywest);// creating statement on the db connection for executing query

        ps.setString(1, Wb_SWLat);
        ps.setString(2, Wb_SWLon);
        ps.setString(3, Wb_NELat);
        ps.setString(4, Wb_NELon);

        ResultSet rsWest= ps.executeQuery();//storing the result into result set
//      System.out.println("test");
//      System.out.println("DBrset:"+rsWest);       

        while(rsWest.next()){ // looping through the resultset

            np=rsWest.getString("priority");
            System.out.println("np:"+np);
        }




        } catch (SQLException e) {
            // TODO Auto-generated catch block
//          e.printStackTrace();
        }
        North=np;
        System.out.println("DB:"+North);


                    return North ;
        }

np 返回 null,当我删除诸如“纬度 >=?和纬度 =?和经度 =" 条件有什么问题?

【问题讨论】:

  • 您是否尝试过调试?实际分配的值是多少?
  • @shmosel 从 tbl_vcl 中选择优先级,其中纬度 >=9.994042 纬度 =76.356653 和经度
  • @shmosel 我尽我所能...从 MySQL 控制台返回的结果是 2,列名优先。而在java页面中返回null
  • 你只需要重新排列参数,
  • 1 - Wb_SWLat,2 - Wb_NELat,3 - Wb_SWLon,4 - Wb_NELon。此外,将其作为字符串而不是双精度/长整数或某种数字类型来处理有点奇怪。

标签: java mysql sql


【解决方案1】:

prepared statement 中的参数顺序与您在 setString 调用中使用的顺序不同(lat/lat/long/long 与 lat/long/lat/long)。

【讨论】:

  • 非常感谢 :)
猜你喜欢
  • 2015-06-03
  • 1970-01-01
  • 2011-07-06
  • 2013-09-30
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-21
相关资源
最近更新 更多