Java结合postgreSql的增删改查遇到问题

4 篇文章 0 订阅

因为用到了geometry,所以简单的插入insert就有问题

第一个问题:
插入的时候用的这种方式:

 public int insert(Student student) {  
        Connection conn = getConn();  
        int i = 0;  
        String sql = "insert into students (id,Name,Sex,Age) values(?,?,?,?)";  
        PreparedStatement pstmt;  
        try {  
            pstmt = (PreparedStatement) conn.prepareStatement(sql);  
            pstmt.setString(1, student.getId());  
            pstmt.setString(2, student.getName());  
            pstmt.setString(3, student.getSex());  
            pstmt.setString(4, student.getAge());  
            i = pstmt.executeUpdate();  
            pstmt.close();  
            conn.close();  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }  
        return i;  
    }  

结果因为用到了geometry,所以不能用setString,但是我看了又没有别的方法,所以只能用最笨的方法

 public int insert(AntGeoPolygon polygon){
        int i=0;
        String sql = "insert into shop_location (address,point,location,name) values ('#address#',#point#,#location#,'#name#')";
        Statement statement = null;
        try {
            statement = connection.createStatement();
            String address="ST_GeomFromText('POLYGON((#address#))')";
            StringBuilder location = new StringBuilder();
            for (int z = 0;z<polygon.getLocation().size();z++){
                location.append(polygon.getLocation().get(z)[0]+" "+polygon.getLocation().get(z)[1]);
                if(z!=(polygon.getLocation().size()-1)){
                    location.append(",");
                }
            }
            address = address.replaceAll("#address#",location.toString());
            sql = sql.replaceAll("#address#",polygon.getAddress()).replaceAll("#point#","ST_GeomFromText('POINT("+polygon.getPoint()[0]+" "+polygon.getPoint()[1]+")',4326)")
            .replaceAll("#location#",address).replaceAll("#name#",polygon.getName());

            System.out.println(sql);
            ResultSet resultSet = statement.executeQuery(sql);

            System.out.println(resultSet);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return i;
    }

结果报错如下

ERROR: syntax error at end of input   位置:233

查询之后发现是少了括号的问题,都检查好之后又报错:

org.postgresql.util.PSQLException: ERROR: geometry contains non-closed rings

最后检查终于成功插入数据,未完待续。。。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值