使用java(jdbc)在mysql中插入地理空间数据类型(多多边形)
我正在使用geotools库提取位置信息。这样我就得到了一个使用java(jdbc)在mysql中插入地理空间数据类型(多多边形),java,jdbc,geospatial,geotools,Java,Jdbc,Geospatial,Geotools,我正在使用geotools库提取位置信息。这样我就得到了一个 class com.vividsolutions.jts.geom.MultiPolygon 现在我想用jdbc连接将此字段存储在mysql表中。 当我直接尝试将其作为 pstminsert.setObject(4,geoobject) 我得到了这个错误 Exception in thread "main" com.mysql.jdbc.MysqlDataTruncation: Data truncation: Cannot get
class com.vividsolutions.jts.geom.MultiPolygon
现在我想用jdbc连接将此字段存储在mysql表中。
当我直接尝试将其作为
pstminsert.setObject(4,geoobject)
我得到了这个错误
Exception in thread "main" com.mysql.jdbc.MysqlDataTruncation: Data truncation: Cannot get geometry object from data you send to the GEOMETRY field
MySql不知道如何存储您的地理对象,也不知道他的大小。您不应该以尝试的方式存储对象 文件说: JDBC规范指定了从Java对象类型到SQL类型的标准映射。给定的参数在发送到数据库之前将转换为相应的SQL类型。 [...] 如果存在歧义,例如,如果对象属于实现上述多个接口的类,则此方法会引发异常
MySql不知道如何存储您的地理对象,也不知道他的大小。您不应该以尝试的方式存储对象 文件说: JDBC规范指定了从Java对象类型到SQL类型的标准映射。给定的参数在发送到数据库之前将转换为相应的SQL类型。 [...] 如果存在歧义,例如,如果对象属于实现上述多个接口的类,则此方法会引发异常 答复
它也可以是二进制的,例如
PreparedStatement preparedStatement = connection.prepareStatement
("INSERT INTO table (point, polygon) VALUES (PointFromWKB(?), GeomFromWKB(?))");
WKBWriter writer = new WKBWriter();
preparedStatement.setBytes(1, writer.write(point));
preparedStatement.setBytes(2, writer.write(polygon));
preparedStatement.executeUpdate();
它也可以是二进制的,例如
PreparedStatement preparedStatement = connection.prepareStatement
("INSERT INTO table (point, polygon) VALUES (PointFromWKB(?), GeomFromWKB(?))");
WKBWriter writer = new WKBWriter();
preparedStatement.setBytes(1, writer.write(point));
preparedStatement.setBytes(2, writer.write(polygon));
preparedStatement.executeUpdate();
你能给我提供一个链接,在那里我可以得到从Java对象到SQL类型的映射吗?我正试图找到它,但在多边形/多面多边形中找不到它。你能给我提供一个链接,在那里我可以得到从Java对象到SQL类型的映射吗?我正试图找到它,但无法找到多边形/多多边形。
PreparedStatement preparedStatement = connection.prepareStatement
("INSERT INTO table (point, polygon) VALUES (PointFromWKB(?), GeomFromWKB(?))");
WKBWriter writer = new WKBWriter();
preparedStatement.setBytes(1, writer.write(point));
preparedStatement.setBytes(2, writer.write(polygon));
preparedStatement.executeUpdate();