2012-05-11 2 views
0

Я использую библиотеку geotools для извлечения информации о местоположении. С этими словами я получаю объект типавставить геопространственный тип данных (mutipolygon) в mysql с java (jdbc)

class com.vividsolutions.jts.geom.MultiPolygon 

теперь я хочу, чтобы сохранить это поле в моей тузда таблице с помощью JDBC соединения. Когда я непосредственно попытаться вставить его как pstmtInsert.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 

ответ

0

MySql не может знать, как хранить объект GEO, или то, что его размер. Вы не должны хранить объект так, как вы пытаетесь.

Документация PreparedStatement#setObject() говорит:

Спецификация JDBC определяет стандартное отображение из типов объектов Java для типов данных SQL. Данный аргумент будет преобразован в соответствующий тип SQL перед отправкой в ​​базу данных. [...] Этот метод генерирует исключение, если существует двусмысленность, например, если объект имеет класс, реализующий более одного из интерфейсов, названных выше.

+0

Можете ли вы предоставить мне ссылку, где я могу получить сопоставление от объектов Java до типов SQL? Я пытаюсь найти это, но не смог найти его для polygon/multipolygon. –

3

Ответ

  1. Вы должны преобразовать геометрический объект, вы должны хорошо известного текста. Вы найдете информацию о том, как это сделать в vividsolutions API documentation.

    geoobject.toText(); 
    
  2. Вставка/Обновление данных с помощью MySQL GeomFromText метода.

    INSERT INTO geom VALUES (GeomFromText(@g)); 
    
1

Это может быть бинарным, а также, например,

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(); 
Смежные вопросы